I am confused about how to save entry in db with column's join. I have @Entity bellow
@XmlRootElement
@XmlAccessorType(value = XmlAccessType.FIELD)
@Entity
@Table(name = "psc_users")
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User implements Serializable {
    private static final long serialVersionUID = 8885916014620036457L;
    @Id
    private static final String SEQUENCE_NAME = "psc_users_user_id_seq";
    @Id
    @GeneratedValue(generator = "UseExistingOrGenerateIdGenerator",
            strategy = GenerationType.SEQUENCE)
    @GenericGenerator(name = "UseExistingOrGenerateIdGenerator",
            strategy = "com.psc.util.UseExistingOrGenerateIdGenerator",
            parameters = {
                    @org.hibernate.annotations.Parameter(name = "sequence", value = SEQUENCE_NAME)
            }
    )
    @Column(name = "USER_ID")
    private Long userId;
    @Column(name = "DEF", length = 30)
    private String def;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "DEL_DATE")
    private Date delDate;
    @Column(name = "DISPLAY_DEF", length = 60)
    private String displayDef;
    @Column(name = "EMAIL", length = 60)
    private String email;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "NAVI_DATE")
    private Date naviDate;
    @Column(name = "NAVI_USER")
    private String naviUser;
    @Column(name = "PHONE", length = 30)
    private String phone;
    @Column(name = "PWD", length = 40)
    private String pwd;
    //bi-directional many-to-one association to Branch
    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "BRNC_BRNC_ID", nullable = false)
    private Branch pscBranch;
    public Long getBrncBrncId() {
        return brncBrncId;
    }
    public void setBrncBrncId(Long brncBrncId) {
        this.brncBrncId = brncBrncId;
    }
    @Column(name = "BRNC_BRNC_ID", insertable = false, updatable = false)
    private Long brncBrncId;
    //bi-directional many-to-one association to User
    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "CURATOR_USER_ID")
    private User pscUser;
    public Long getCuratorUserId() {
        return curatorUserId;
    }
    public void setCuratorUserId(Long curatorUserId) {
        this.curatorUserId = curatorUserId;
    }
    @Column(name = "CURATOR_USER_ID", insertable = false, updatable = false)
    private Long curatorUserId;
    public User() {
    }
    public Long getUserId() {
        return this.userId;
    }
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    public String getDef() {
        return this.def;
    }
    public void setDef(String def) {
        this.def = def;
    }
    public Date getDelDate() {
        return this.delDate;
    }
    public void setDelDate(Date delDate) {
        this.delDate = delDate;
    }
    public String getDisplayDef() {
        return this.displayDef;
    }
    public void setDisplayDef(String displayDef) {
        this.displayDef = displayDef;
    }
    public String getEmail() {
        return this.email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Date getNaviDate() {
        return this.naviDate;
    }
    public void setNaviDate(Date naviDate) {
        this.naviDate = naviDate;
    }
    public String getNaviUser() {
        return this.naviUser;
    }
    public void setNaviUser(String naviUser) {
        this.naviUser = naviUser;
    }
    public String getPhone() {
        return this.phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getPwd() {
        return this.pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public Branch getPscBranch() {
        return this.pscBranch;
    }
    public void setPscBranch(Branch pscBranch) {
        this.pscBranch = pscBranch;
    }
    public User getPscUser() {
        return this.pscUser;
    }
    public void setPscUser(User pscUser) {
        this.pscUser = pscUser;
    }
}
if I save User instance without field pscUser (here null) but there is valid CuratorUserId with correct value I end up in a situation with empty CuratorUserId in db. If you look at code then you will see these bound fields.
  @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "CURATOR_USER_ID")
    private User pscUser;
    @Column(name = "CURATOR_USER_ID", insertable = false, updatable = false)
    private Long curatorUserId;
code to save user
repositoryUser.save(user);
this i see in debugger
this i see in database after saving my user.
sorry for my stupid question but I come across on a different behavior, there is code in my project which behaves in another manner. I don't want to search actual another user(curator) for saving my user, because of overhead on query


 
     
    