我已经查看了以前的问题,但所有解决方案仍然不适用于我的项目。
我有一个使用 spring core 5.2.3 的 CUBA 平台项目。CUBA 使用基于 EclipseLink 框架的 ORM 实现。
我有 1 个 MainClass 实体和子类实体。
主类定义
//annotations here
public class MainClass{
@Composition
@OnDelete(DeletePolicy.CASCADE)
@OneToMany(mappedBy = "mainClass", cascade = CascadeType.ALL, orphanRemoval = true)
protected List<SubClass> subClass;
public Category getCategory() {
return category;
}
}
//子类实体
//annotations here
public class SubClass{
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "MAINCLASS_ID")
protected MainClass mainClass;
}
这个设置的问题是它只保存了 MainClass 实体而不是 SubClass 实体。
服务等级
@Service("MainService")
public class ServiceClass{
@Inject
private Persistence persistence;
@Transactional
public void saveOrUpdateMain(MainClass mainClass){
MainClass qMainClass = (MainClass) entityManager.createQuery("select
b from main_Class b where b.extID = ?1")
.setParameter(1, extID).getSingleResult();
//assume mainClass is not null, set the primary key of qMainClass to mainClass
mainClass.setId(qMainClass.getId());
entityManager.merge(mainClass);
}
}
我已经阅读了这 2 个链接,但仍然没有解决我的问题。