Zec*_*tes 16 annotations hibernate where-clause
我有一个实体,它与另一个用@Where注释的实体有关联,就像这样
public class EntityA {
@OneToMany
@Where(...)
private List<EntityB> entityBList;
}
Run Code Online (Sandbox Code Playgroud)
最近不可避免的事情发生了,我需要加载不符合@Where子句的EntityB.我可以删除@Where注释,但它被大量使用,所以理想情况下我不想这样做.除了手动加载EntityB的列表,还有另一个查询,我的选择是什么?我可以告诉Hibernate忽略@Where注释吗?
小智 8
我只是有同样的问题。我解决了这样的问题:
@Query(value="SELECT * FROM EntityA", nativeQuery=true)
public ignoreWhereMethod(){}
Run Code Online (Sandbox Code Playgroud)
@Query批注中的SQL必须指向表的名称和字段的名称(而不是实体的名称)。
我知道这是一个古老的问题但是如果有人寻找答案......
我也有同样的困境,你不想在每个你选择的地方用"is_deleted = false"弄乱你的代码,
简单的解决方案是使用本机SQL:
lst = sessionFactory.getCurrentSession().
createSQLQuery("select {entb.*} from EntityB entb where is_deleted=1")
.addEntity("entb", EntityB.class)
.list();
Run Code Online (Sandbox Code Playgroud)
您可以使用相同的数据映射其他属性,如下所示:
public class EntityA {
@OneToMany
@JoinColumn(name='theColumnName', insertable=false, updateable=false)
private List<EntityB> entityBListReadOnly;
}
Run Code Online (Sandbox Code Playgroud)
重要的是设置为可更新的false和可插入的falso以避免数据中的一致性问题!
| 归档时间: |
|
| 查看次数: |
11341 次 |
| 最近记录: |