我有一个关于删除EJB3中的实体的问题。
我有两个数据库表:MainCategory
和Category
。
首先,我必须找到所有MainCategory
个实体'名称及其Category
,所以我这样做:
public List<MainCategory> findAllWithCategories() {
TypedQuery<MainCategory> query = em.createNamedQuery("MainCategory.findAll", MainCategory.class);
List<MainCategory> result = query.getResultList();
for (MainCategory mc : result){
try{
Hibernate.initialize(mc.getSubCategories());
}catch (Exception e){
e.printStackTrace();
}
}
return result;
}
比我需要它的类别,但我必须初始化一些东西,所以我这样做(其中selectedMainCategory
是List<MainCategory> = mainCategoryRepository.findAllWithCategories()
的元素)
List<Category> mainCategories = categoryRepository.findByMainCategoryIdAndInitialze(selectedMainCategory.getId());
而不是:
List<Category> subCategories = mainCategory.getSubCategories();
在执行某些操作后,我需要删除Category
,所以我这样做(其中selectedSubCategory
是subCategories
的元素):
selectedMainCategory.getSubCategories.remove(selectedSubCategory);
mainCategoryRepository.modify(selectedMainCategory);
但selectedSubCategory
尚未从selectedMainCategory.getSubCategories()
中移除getSubCategories.remove(object)
。
好的,如果我通过ID找到它并手动从列表中删除,我可以手动将其删除,但我无法找出{{1}}在这种情况下无效的原因。我想这是两个java对象相等的东西,但我不确切知道。在这种情况下,EJB和Java如何工作?你能解释一下吗?