1) A and B have a one-to-many relationship.
I am on B's BEAN and establish the following relationship through 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) The problem now is that when TABLE_B.A_ID = TABLE_A.ID, TABLE_B.COLB1="ABC" is also required.
The solution is as follows:
@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"))
})