- 我通過stateless服務獲取從數據庫中的一個實體,
- 然後修改它在另一個豆和
- 然後要通過無狀態的服務將其保存到數據庫中,
我注意到實體已被分離。我認爲,因爲無狀態服務的持久性上下文,實體來自被佔領的存在。 但是,應該使用有狀態服務嗎?
現在保存時我使用EntityManager#find(ClassOfDetachedEntity,PrimaryKeyOfDetachedEntity)
來獲得對數據庫中實體的引用,然後將分離的實體分配給它。
但這是這樣嗎?
在我只是堅持複製到數據庫之前,雖然我只是想修改現有的條目。
UPDATE(簡單的例子,以顯示其中 「超脫」 - 問題發生時):
@Stateless
@Log
public class DatabaseService implements Serializable {
@PersistenceContext
EntityManager em;
public List<Category> getCategories() {
return em.createQuery("SELECT c FROM Category c").getResultList();
}
public void checkIfDetached(Object o){
log.info("is detached: " + String.valueOf(!em.contains(o)));
}
}
豆登錄聲明會告訴我,對象被分離:
@ManagedBean
@ViewScoped
public class CategoriesBean implements Serializable {
private Category testCategory;
@PostConstruct
public void init(){
testCategory = dbs.getCategories().get(0);
dbs.checkIfDetached(testCategory);
}
}
謝謝您的回答。我沒有使用@Remote EJB。 – Lester