我试图让一些测试工作而不依赖于应用程序的数据库。该应用程序正在使用JPA w / Hibernate。我尝试在方法和类上使用@Transactional
注释类没有成功。
以下是Employee.java
中的关系:
@OneToMany(mappedBy = "manager", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Employee> directReports;
这是测试,最后一个arg是manager
:
Employee ceo;
Employee evp;
@Before
public void setup() {
ceo = new Employee("Name", "ceo", null);
evp = new Employee("Name", "evp", ceo);
}
@Test
public void testThatDirectReportsAreAssignedWithoutPersistence() {
assertNotNull(ceo.getDirectReports());
}
答案 0 :(得分:0)
你拥有的是双向关系。 Hibernate会自动填充关系的两端,但前提是它从数据库中读取它。如果您只是在没有往返数据库的情况下创建或更新一方的关系,它将不会启动以修复另一方。也没有任何其他JPA实施AFAIK。
对于双向关系,人们通常会解决像这样的结构: How to handle bidirectional relationships when constructing hibernate entities?,但通常会导致代码混乱。
更好:尽量避免双向关联。