嗨!由于我的英语不好,我会用例子直接显示我的问题。
我有两个实体:产品和类别(一个产品与一个类别相关联)。我的问题在于这个标准:
Criteria crit = createCriteria( Product.class, "prod" );
crit.createAlias( "prod.category", "cate" );
crit.add( Restrictions.eq( "cate.name", "TEST" ) );
crit.add( Restrictions.eq( "prod.status", "ON" ) );
List< Product > list = crit.list();
这将自动返回产品和类别的所有属性,但我想要仅限产品。 HQL工作正常:
select prod
from Product prod join Category cate
where cate.nome = 'TEST' and prod.status = 'ON'
但是我需要使用Criteria!怎么可能? Obs。:使用Projections是不切实际的,因为实体每个都有大约30个属性。 非常感谢。
答案 0 :(得分:1)
使用DistinctRootEntityResultTransformer
:
crit.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);
答案 1 :(得分:1)
您可能正在使用fetch = eager或lazy = false属性,请尝试检查属性值并进行相应更改。
答案 2 :(得分:0)
尝试通过添加
来覆盖此条件的提取模式crit.setFetchMode("category", FetchMode.LAZY)