[英]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.