1) A和B是一对多的关系。
我在B的BEAN上面,通过Anotation建立如下关系。
@ManyToOne(cascade = CascadeType.REFRESH, targetEntity = TABLE_A.class)
@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable = true, insertable = false, updatable = false)
2) @ManyToMany(fetch = FetchType.LAZY)
@Cascade(value = { CascadeType.SAVE_UPDATE })
@JoinTable(name = "COM_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
private Set<SystemRole> systemRoles = new HashSet<SystemRole>();
3) @JoinColumn(name = "PAYMENT_ID")
@ManyToOne(fetch = FetchType.LAZY)
private Payment payment;
4) 现在的问题来了,就是在 TABLE_B.A_ID = TABLE_A.ID同时,还要求TABLE_B.COLB1="ABC"。
解决办法如下:
@ManyToOne(cascade = CascadeType.REFRESH, targetEntity = TABLE_A.class)
@JoinColumnsOrFormulas(value={
@JoinColumnOrFormula(
column=@JoinColumn(name ="A_ID", referencedColumnName ="ID",
nullable = true, insertable =false, updatable = false)
),
@JoinColumnOrFormula(formula=@JoinFormula(value="'ABC'", referencedColumnName = "COLB1"))
})