【问题标题】:Returning an Entity using Criteria使用条件返回实体
【发布时间】:2011-04-05 17:18:37
【问题描述】:

[Hibernate] 使用条件返回实体

嗨!由于我的英语很差,我会用例子直接说明我的问题。

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

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();  

这会自动返回 Product AND Category 的所有属性,但我想要 ONLY Product。 HQL 工作正常:

select prod 
from   Product prod join Category cate 
where  cate.nome = 'TEST' and prod.status = 'ON'

但是我需要这个和标准!怎么可能? 观察:使用投影是不切实际的,因为每个实体都有大约 30 个属性。 非常感谢。

【问题讨论】:

标签: java hibernate criteria


【解决方案1】:

使用DistinctRootEntityResultTransformer:

crit.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);

【讨论】:

  • 感谢您的回答,但没有任何变化。
【解决方案2】:

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

【讨论】:

  • 我在所有关联中使用 fetch=FetchType.EAGER。
【解决方案3】:

尝试通过添加覆盖此条件的获取模式

crit.setFetchMode("category", FetchMode.LAZY)

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 2015-06-13
    • 2020-11-16
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多