[英]persisted java entity reference issue
我正在做一个个人项目,即使经过许多小时的研究和调试,我也遇到了一个似乎无法解决的奇怪问题,因此很明显,这很简单,我就忽略了....无论如何,上下文是:JPA + PostgresSQL + Glassfish。 我有一个实体(由netbeans生成),MvUser,具有:
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id")
@SequenceGenerator(name="mv_user_autoincrement_gen",sequenceName ="mv_user_autoincrement",allocationSize=1)
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="mv_user_autoincrement_gen")
private Long id;
然后,对于所有样板持久性代码,我都有一个具有泛型的AbstractFacade。
在这里,我有一个方法并不能做很多事情,只是:
@Override
public void create(T entity) {
getEntityManager().persist(entity);
}
现在,假设我在服务类中将此称为:首先,我注入我的外观:
@EJB
IMvUserFacade userFacade;
然后我将使用它:
@Override
public void saveUser(MvUser user)
{
userFacade.create(user);
// more business specific code follows
}
我这样打电话给服务
MvUser = new MvUser();
... setters etc
mvUserService.saveUser(user);
现在,正在发生的事情是,在create方法中该对象得以保留,我拥有生成的ID和所有内容。 因为在整个链上我都有对象参数,所以我假设在saveUser级别上将找到相同的对象,但是不,我剩下一个分离的实体。 我做错了什么? 谢谢。
如果我对您的理解正确,则想搜索保存在create()中的对象。 我认为该对象尚未持久保存到数据库中,您检索的是来自一级缓存http://www.tutorialspoint.com/hibernate/hibernate_caching.htm的对象,因为您仍在事务中。 如果尝试按以下方式检索对象,并且方法saveUser()不在事务内,则将从数据库中获取用户对象(但由于在外部事务中已分离):
public void saveUser(MvUser user)
{
userFacade.create(user);
userFacade.get(userId);
// more business specific code follows
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.