Java Hibernate:使用联接表-org.Hibernate.PropertyValueException持久化具有双向多对一映射的实体
您好,我正在尝试将我的一个实体“角色”持久化,它通过联接表与我的另一个实体“用户”具有多对一关系。但是,每次尝试在没有任何附加用户的情况下插入角色时,都会出现以下错误:org.hibernate.PropertyValueException:notnull属性引用null或瞬时值。 我的角色实体映射到用户:Java Hibernate:使用联接表-org.Hibernate.PropertyValueException持久化具有双向多对一映射的实体,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,您好,我正在尝试将我的一个实体“角色”持久化,它通过联接表与我的另一个实体“用户”具有多对一关系。但是,每次尝试在没有任何附加用户的情况下插入角色时,都会出现以下错误:org.hibernate.PropertyValueException:notnull属性引用null或瞬时值。 我的角色实体映射到用户: @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, CascadeType.PERSIST, CascadeT
@ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH,
CascadeType.DETACH })
@JoinTable(name = "t_UserRoles", joinColumns = {
@JoinColumn(name = "cUserRolesRoleId", referencedColumnName = "cRoleId") }, inverseJoinColumns = {
@JoinColumn(name = "cUserRolesUserId", referencedColumnName = "cUserId") })
private User user;
和我的用户角色:
@OneToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.DETACH })
@JoinTable(name = "t_UserRoles", joinColumns = {
@JoinColumn(name = "cUserRolesUserId", referencedColumnName = "cUserId") }, inverseJoinColumns = {
@JoinColumn(name = "cUserRolesRoleId", referencedColumnName = "cRoleId") })
private Set<Role> roles;
目标是能够保存角色,而无需创建用户实例。
我已经尝试过的事情:
@多通(可选=真
@JoinColumn(name=“cUserRolesRoleId”,referencedColumnName=“cRoleId”,nullable=true)
如果你需要更多的代码,请告诉我!
提前感谢您的帮助!首先,是否有任何理由在一对多关系中使用联接表 我认为,也应该有一个“角色定义”表,其中定义了角色类型,但是角色实体不应该与具体的用户相关。这种关系应该是多对多的。对我来说,这更有意义 或者角色实体实际上与用户相关,但我会省略一个联接表
...
Role newRole = new Role();
newRole.setRoleName(roleName);
roleAfterSave = manager.merge(newRole);
manager.getTransaction().commit();