0
我有2个表之间的多对多关系,我用连接表定义。JPA加入不级联的jUnit测试
//MyClassA
@ManyToMany
@JoinTable(name="A_TO_B",
[email protected](name="A_UUID"),
[email protected](name="B_UUID")
)
private List<MyClassB> classBs = new ArrayList<MyClassB>();
//MyClassB
@ManyToMany(mappedBy="classBs")
private List<MyClassA> classAs = new ArrayList<MyClassA>();
由于公司架构限制,连接表必须具有UUID列。
我有一个名为associateItems
的DAO方法,它应该在连接列中插入一行。为了测试所有内容,我在jUnit测试中执行以下操作。
myDao.associateItems(classAItem, classBItem);
classAItem = myDao.get(classAItem.getUuid());
classBItem = myDao.get(classBItem.getUuid());
assertEquals(1, classAItem.getClassBs().size());
assertEquals(1, classBItem.getClassAs().size());
该测试在最后2行失败。
在我的DAO中,我尝试了很多东西。我尝试将classAItem
和classBItem
添加到彼此列表并合并它们。但是这会导致错误,因为连接表对象没有UUID。我试着创建连接表对象并坚持。但后来最后两行测试失败,因为它认为列表的大小为0.
我一直坚持使用第二种解决方案(失败优于错误)。
public void associateItems(MyClassA classAItem, MyClassB classBItem) {
//UUID populated in constructor
AToB association = new AToB(classAItem, classBItem);
entityManager.persist(association);
}
我知道连接表项正在插入到数据库中。我还手动输入了连接表项目,并确保在找到关联时填充列表。所以测试只是在制作连接表项并关联相关列表时遇到问题。
我已经尝试搞乱级联,获取类型和冲洗。但我似乎无法找到让测试通过的方法。
任何人都知道我需要做什么来解决这个问题?