具有多个连接的HQL查询

时间:2012-08-29 22:51:19

标签: java hibernate java-ee hql

我有三个类的以下关系:

   @Entity
    public class User{

       @OnetoMany
       List<Attribute> attributes = new ArrayList<Attribute>();
    }

    @Entity
    public class Attribute{
       @ManyToOne
       AttributeType attributeType;

    }

    @Entity
    public class AttributeType{

       @Column
       String type;
    }

一个用户可以拥有m种类型的n个属性。

我需要创建HQL查询,该查询将返回特定用户属性的所有属性类型List<AttributeType>

例如,用户具有类型t的属性a,类型为t的属性b和类型为t1的属性c。 我需要返回List<AttributeType>,其中包含t和t1。

请帮忙。我刚刚迷上了这个问题。

1 个答案:

答案 0 :(得分:1)

您应将属性映射到用户多对一关系,因此您需要以下查询:

select distinct atr.attributeType
  from Attribute atr
 where atr.user = :user

我认为以下查询也会起作用:

select distinct atrs.attributeType
  from User as user
  join user.attributes as atrs   
 where user.id = :user_id