使用条件返回实体

时间:2011-04-05 17:18:38

标签: java hibernate criteria

[Hibernate]使用Criteria返回实体

嗨!由于我的英语不好,我会用例子直接显示我的问题。

我有两个实体:产品和类别(一个产品与一个类别相关联)。我的问题在于这个标准:

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个属性。 非常感谢。

3 个答案:

答案 0 :(得分:1)

使用DistinctRootEntityResultTransformer

crit.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);

答案 1 :(得分:1)

您可能正在使用fetch = eager或lazy = false属性,请尝试检查属性值并进行相应更改。

答案 2 :(得分:0)

尝试通过添加

来覆盖此条件的提取模式
crit.setFetchMode("category", FetchMode.LAZY)