gpt4 book ai didi

hibernate - 单元测试 fetchtype 懒惰

转载 作者:行者123 更新时间:2023-12-04 06:18:58 28 4
gpt4 key购买 nike

我有以下代码:

@Entity
public class Foo {

@OneToMany(mappedBy = "Foo", fetch = FetchType.LAZY)
@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
private Collection<Bar> bars;
}

@Entity
public class Bar {

@ManyToOne
private Foo foo;
}

我正在尝试对 DAO 类进行单元测试。
@Transactionl
public class TestDao {

@Test
public void testLazy (){
Foo foo = dao.findById(1);
assertTrue(foo.getBars() != null && !foo.getBars().isEmpty())
//SOME CODE THAT I NEED YOUR HELP WITH
assertTrue(foo.getBars() == null || foo.getBars().isEmpty())
}

@Test
test1...

@Test
test2...

@Test
test3...

}

我需要帮助弄清楚什么//我需要你帮助的一些代码
需要通过此测试。

谢谢您的帮助
内塔

最佳答案

所以你想测试一下 bars第一次访问集合时会延迟加载集合吗?

我通过实现两个测试做了类似的事情。一种测试在数据延迟加载时检查集合的正确大小,另一种测试检查分离后访问集合时抛出的特定异常。

类似的东西(JPA/Hibernate + TestNG)

@Test
public void testLazyLoading() {

// load foo
Foo foo = dao.findById(1);

// check correct size
assertTrue(foo.getBars() != null && !foo.getBars().isEmpty())

}

@Test(expectedExceptions=LazyInitializationException.class)
public void testLazyInitializationException() {

// load foo
Foo foo = dao.findById(1);

// detach all instances
entityManager.clear();

// will throw LazyInitializationException
foo.getBars().size();

}

关于hibernate - 单元测试 fetchtype 懒惰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855621/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com