Java 具有唯一字段的Spring持久化对象创建重复异常
我有一个用户对象(第一个、最后一个、角色id)和角色对象(角色id、名称),角色名称是唯一的字段。从表单提交中,我获得了用户数据和角色名。由于所有用户的角色名都是“user”,当我在第一个用户之后持久化用户对象时,会出现重复的角色名异常。我相信有一个简单的解决我的问题,请帮助 在User.java中:Java 具有唯一字段的Spring持久化对象创建重复异常,java,spring,hibernate,jpa,persist,Java,Spring,Hibernate,Jpa,Persist,我有一个用户对象(第一个、最后一个、角色id)和角色对象(角色id、名称),角色名称是唯一的字段。从表单提交中,我获得了用户数据和角色名。由于所有用户的角色名都是“user”,当我在第一个用户之后持久化用户对象时,会出现重复的角色名异常。我相信有一个简单的解决我的问题,请帮助 在User.java中: //bi-directional many-to-one association to Role @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeT
//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);
这是因为您正在关联上使用
cascade=PERSIST
。这告诉JPA,如果您persist
a用户
,那么它也必须persist
关联的角色
。这对第一个用户有效,但后续的用户
持久化
操作将失败,因为角色
已经存在
一种解决方法是删除级联,在持久化任何用户之前,先持久化
角色
实体一次。另请参见Thx!那么,我是否必须从role中选择role_id by name来检查角色名是否已经存在于所有用户中?并在持久化用户之前手动向用户添加角色\u id?