如何在运行时更改hibernate映射属性

dma*_*may 4 hibernate

我有一个实体,其中我指定了lazy ="false"和batch-size ="100".它工作正常但在其他情况下我想删除批量-size并设置lazy ="true".如果我更改hbm文件,那么它会影响其他应用程序.有没有什么办法可以在执行hql之前更改当前会话的实体属性.

uı6*_*uɐp 8

您可以通过HQL或条件查询在运行时更改提取策略(延迟或不更改).在HQL中,您可以使用获取连接来初始化已连接集合的值,例如:

from Cat as cat
inner join fetch cat.mate
left join fetch cat.kittens
Run Code Online (Sandbox Code Playgroud)

请参阅Hibernate Doku - 15.3.关联和联接

使用条件api的Criteria.setFetchMode(..)代替条件查询,例如:

List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.setFetchMode("mate", FetchMode.EAGER)
.setFetchMode("kittens", FetchMode.EAGER)
.list();
Run Code Online (Sandbox Code Playgroud)

Hibernate Doku:16.5.动态关联提取