我有一个名为
Band
的实体,它具有属性List<Genres> genres
,Genres是一个枚举类型,其包含以下值:ALTERNATIVE_ROCK("Alternative Rock")
,CLASSIC_ROCK("Classic Rock")
,HARD_ROCK("Hard Rock")
,HEAVY_METAL("Heavy Metal")
,PROGRESSIVE_ROCK("Progressive Rock")
。我想创建一个方法,使用HQL返回一个List<Band>
,并以List<Genres>
作为参数,类似于以下内容:
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
属性genres映射,实体Band...
@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
还是默认值。 - Arturo Volpe