簡體   English   中英

持久的Java實體參考問題

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM