【发布时间】:2015-02-27 05:00:18
【问题描述】:
我有一个名为 Band 的实体,其属性为 List<Genres> genres,流派是一个具有以下值的 ENUM:ALTERNATIVE_ROCK("Alternative Rock"), CLASSIC_ROCK("Classic Rock"), HARD_ROCK("Hard Rock"), HEAVY_METAL("Heavy Metal"),PROGRESSIVE_ROCK("Progressive Rock");
我正在尝试创建一个方法,该方法使用 List<Genres> 作为 HQL 的参数返回 List<Band>,类似于:
public List<Band> listBandsPerGenres(List<Genres> genres);
但是我收到了一些我尝试过的 HQL 查询的错误?
以上我尝试过的一些 hql 查询...
Query q = getSession().createQuery("SELECT b FROM Band b JOIN FETCH b.genres g WHERE g IN (?)");
q.setParameter(0, genres);
return q.list();
返回一个错误,指出无法将 ArrayList 强制转换为 Enum...
或者...
"SELECT b FROM Band b JOIN FETCH b.genres g WHERE g.value IN (?)"
返回一个错误,例如:取消引用标量集合元素 ENUM
属性类型映射,实体乐队...
@Basic(optional=false)
@Enumerated(EnumType.STRING)
@ElementCollection(targetClass=Genres.class)
@CollectionTable(name="banda_generos", joinColumns=@JoinColumn(name="id_banda", nullable=false))
private List<Genres> genres;
【问题讨论】:
-
您尝试了哪些查询,相应的错误是什么?
-
请添加
List<Genres>的注解,重要的是看是EnumType.String还是默认的。 -
我正在使用这个 ENUM,比如 ENUMTYPE.STRING
-
请添加带有所有注释的整个属性(流派属性)
标签: java hibernate enums persistence hql