我有一对多关系,其中“孩子”是懒惰的。如果使用此设置运行junit测试,我将遇到org.hibernate.LazyInitializationException - 我已经寻找了大量可能的解决方案(我不愿意将fetch类型设置为渴望更简单地测试内容)
但是,如果我将我的测试注释为@Transactional,我将不会收到错误,但它将为实体子项返回null。
我以某种方式理解懒惰的提取异常,但如果我在同一个事务中,为什么我不能懒得取东西呢?例如:
@Transactional
@Test
public function test() {
ParentEntity parentEntity = parentEntityService.read(requestContext, p.getId());
Set<ChildEntity> childEntitites = parentEntity.getChildren();
Assert.assertNotNull(childEntities); // will fail
}
没有@Transactional的同样会导致延迟提取异常。我已经使用了
有什么想法吗?
**编辑**
@Entity
@Table(name = "T_PARENTENTITY")
@SequenceGenerator(initialValue = 1, name = "idgen", sequenceName = "SEQ_PARENTENTITY")
public class ParentEntity extends BaseEntity{
@Getter @Setter
@NotNull @NotEmpty
@Column(name="STRING_1")
private String string1;
@Getter @Setter
@OneToMany(orphanRemoval = true)
@JoinColumn(name="PARENTENTITY_ID", updatable = false)
@JsonView(View.DetailView.class)
private Set<ChildEntity> children;
}