我正在Hibernate中尝试延迟加载实体,但无法克服上面的错误。我基本上在玩2个实体:用户和角色:
public class User implements Serializeable {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "T_USER_ROLE", joinColumns = @JoinColumn(name = "USER_ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
private Set<Role> roles = new HashSet<Role>();
}
public class Role implements Serializeable { }
然后我有一个创建User实体的action bean,我们称之为方法1:
user.getRoles().add(roleService.findByName(RolesEnum.ADMIN.toString()));
em.persist(user);
然后,在设置角色和更新之前,我尝试先持久化用户实体,但也失败了:
userService.create(user);
User user = userService.findById(user.getId());
Set<Role> roles = new HashSet<Role>();
roles.add(roleService.findByName(RolesEnum.MEMBER.toString()));
user.setRoles(roles);
userService.update(user, true);
请注意:
以下是完整的错误日志:
java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.test.Role org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1374)
这个问题是通过将实体管理器绑定到对话范围并使用seam-solder来解决的。
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
public @interface TempJpa { }
@ExtensionManaged
@ConversationScoped
@Produces
@PersistenceUnit(unitName="tempDataSource")
@TempJpa
private EntityManagerFactory emf;
@Inject
@TempJpa
protected EntityManager em;
但下一个问题是为什么?
我目前正在做一个项目,我遇到了这个错误: 发生了什么:1。)我在登录后设置了一个会话范围变量,比如SessionScopeVariableA。 2.)然后我有一个页面,我在其中添加一个实体,比如EntityA。 3.)EntityA有一个惰性字段sessionScopeVariableA,所以当我调用add方法时,我必须设置这个变量。 4.)请注意,SessionScopeVariableA被包装
我有两个例子。一个是项目,一个是模块。< code >一对多关系。 我将模块设置到项目中。然后使用。第一次,因为数据库中没有记录,所以项目和模块可以保存到数据库中。然而,第二次,因为我不需要创建新项目,我只创建新模块,然后将模块设置回项目。 发生异常。 对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。 有什么办法可以解决这个问题吗谢谢
上图显示了表之间的关系。 AddressType表包含静态值,如mailing、home、work等。 在AddressTypeRel模型类中,我有一个带有多对一注释的AddressType对象
错误: 我还尝试了,但是 病因是什么?显然,我设置了nullable=true(在数据库中也是如此),尽管我有这个错误。有什么想法吗?
user.java是 我正在使用这个视频中提到的存储库,是 和 这个问题有什么更好的解决办法吗?
我试图将用户详细信息存储到以下表中:user、role、user_role。当试图保存详细信息时,它会引发以下错误。 托管刷新时出错[org.hibernate.transientPropertyValueException:object引用未保存的瞬态实例-在刷新前保存瞬态实例 这里user_role是父表,user和role表是子表。我尝试了cascade=cascade.all。即使它也会犯