我有三个类的以下关系:
@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。
请帮忙。我刚刚迷上了这个问题。
答案 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