yeluo0309 2017-02-17 13:26 采纳率: 14.3%
浏览 8579

Spring Data JPA Join 关联查询

项目中有两个实体ApprovalFlow(审批),Rest(请假申请),

因为业务需求(多个实体的ID对应审批表的itemID),

两个实体没有做@OneToMany的关联,

现在需要通过 ApprovalFlow.itemId= Rest.id 进行关联查询。

我是用的CriteriaBuilder,Join等方法进行查询的,

想请问各位大神,这个关联如何写。

ApprovalFlow类

public class ApprovalFlow implements Serializable {

    private static final long serialVersionUID = 976152522309023013L;
    @Id
    @GeneratedValue(generator="uuid")
    @GenericGenerator(name="uuid", strategy="uuid")
    @Column(length = 32)
    private String id;
    /**
     * 审批项ID
     */
    private String itemId;
    /**
     * 对应审批流程
     */
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn
    private ApprovalProcess approvalProcess;
    /**
     * 模块
     */
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn
    @NotNull
    private Module module;
    /**
     * 审批人
     */
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn
    private Account account;
    /**
     * 审批状态
     * 
     * 0:未审批
     * 1:公司内部审批中
     * 2:总公司审批中
     * 5:审批中止(拒绝)
     * 10:审批完成
     */
    private Integer status;
    /**
     * 备注
     */
    private String remark;

    // 省去getter setter

}

Rest类

public class Rest implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = -1900505784626965483L;

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid",    strategy = "uuid")
    private String id;

    /**
     * 请假开始日期
     */
    @Temporal(TemporalType.DATE)
    @JSONField(format = "yyyy-MM-dd")
    @NotNull
    private Date startDate;
    @Transient
    private Date startStartDate;
    @Transient
    private Date endStartDate;

    /*
     * 请假结束时间
     */
    @Temporal(TemporalType.DATE)
    @JSONField(format = "yyyy-MM-dd")
    @NotNull
    private Date endDate;
    @Transient
    private Date startEndDate;
    @Transient
    private Date endEndDate;

    /**
     * 请假理由
     */
    @Lob
    @NotEmpty(message = "请假理由不能为空!")
    @Column(columnDefinition="TEXT")
    private String reason;

    /**
     * 请假天数
     */
    @NotNull
    @Column(length = 3)
    private Integer dayNumber;

    /**
     * 账号信息
     */
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "account_id")
    private Account account;

    // 省去getter setter
}
  • 写回答

3条回答 默认 最新

  • 夕阳雨晴 2017-02-17 14:29
    关注

    将你的持久化对象贴出来,应该更好描述一些吧。

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码