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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试