单元测试依赖于@OneToMany集合的类

时间:2015-09-04 13:36:30

标签: spring hibernate jpa junit spring-data

我试图让一些测试工作而不依赖于应用程序的数据库。该应用程序正在使用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());
}

1 个答案:

答案 0 :(得分:0)

你拥有的是双向关系。 Hibernate会自动填充关系的两端,但前提是它从数据库中读取它。如果您只是在没有往返数据库的情况下创建或更新一方的关系,它将不会启动以修复另一方。也没有任何其他JPA实施AFAIK。

对于双向关系,人们通常会解决像这样的结构: How to handle bidirectional relationships when constructing hibernate entities?,但通常会导致代码混乱。

更好:尽量避免双向关联。