我有一个USER对象(first,last,role_id)和ROLE对象(role_id,name),角色名是一个唯一的字段。从表单提交,我获得用户数据和ROLE名称。并且由于所有用户都具有' user'的ROLE名称,当我在第一个用户之后保留User对象时,我得到重复的角色名称异常。我确信我的问题有一个简单的解决方法,请帮忙。
在User.java中:
//bi-directional many-to-one association to Role
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.PERSIST)
@JoinColumn(name="ROLE_ID")
private Role role;
保存用户对象:
em.persist(aaUser);
答案 0 :(得分:0)
那是因为你在关联上使用了cascade=PERSIST
。这告诉JPA,如果您persist
User
,那么它还必须persist
关联的Role
。这适用于第一个用户,但后续User
persist
操作将失败,因为Role
已存在。
解决方法是删除级联,并在持久保存任何用户之前保留Role
实体一次。