Tôi đã một thực thể gọi là Band
với một thuộc tính List<Genres> genres
, thể loại là một ENUM với các giá trị sau: ALTERNATIVE_ROCK("Alternative Rock"), CLASSIC_ROCK("Classic Rock"), HARD_ROCK("Hard Rock"), HEAVY_METAL("Heavy Metal"),PROGRESSIVE_ROCK("Progressive Rock");
sử dụng danh sách enum như tham số trong truy vấn HQL
Tôi đang cố gắng để tạo ra một phương thức trả về một List<Band>
sử dụng một List<Genres>
làm tham số sử dụng HQL, giống như sau:
public List<Band> listBandsPerGenres(List<Genres> genres);
Nhưng tôi đang gặp một số lỗi với truy vấn HQL mà tôi đã thử?
Trên một số truy vấn HQL mà tôi đã cố gắng ...
Query q = getSession().createQuery("SELECT b FROM Band b JOIN FETCH b.genres g WHERE g IN (?)");
q.setParameter(0, genres);
return q.list();
trả về một lỗi nói rằng một ArrayList không thể được đúc để Enum ...
hoặc ...
"SELECT b FROM Band b JOIN FETCH b.genres g WHERE g.value IN (?)"
trả về lỗi như: yếu tố thu thập vô hướng dereference ENUM
đặc tính thuộc tính mappin g, tổ chức ban nhạc ...
@Basic(optional=false)
@Enumerated(EnumType.STRING)
@ElementCollection(targetClass=Genres.class)
@CollectionTable(name="banda_generos", [email protected](name="id_banda", nullable=false))
private List<Genres> genres;
các truy vấn bạn đã thử là gì và các lỗi tương ứng là gì? –
Vui lòng thêm chú thích của 'Danh sách', điều quan trọng là phải xem đó là 'EnumType.String' hay mặc định. –
Tôi đang sử dụng ENUM này như ENUMTYPE.STRING –