TypedQuery インターフェイス、NamedQuery、および多対多の関係を使用してクエリを作成する際に問題があります。ここに私のレポートエンティティがあります:
@Entity
@Table(name = "REPORT")
@NamedQueries({
@NamedQuery(name = Report.NAMED_QUERY.FIND_USERS, query = "SELECT r.users FROM Report r WHERE r = :report")})
public class Report {
public interface NAMED_QUERY {
String FIND_USERS = "Report.findUsers";
}
@ManyToMany
@JoinTable(name = "REPORT_USER", joinColumns = @JoinColumn(name = "REPORT_ID"), inverseJoinColumns = @JoinColumn(name = "USER_ID"))
private Set<User> users;
//another fields, getters and setters
}
そしてユーザーエンティティ。ここには、多対多の関係をマップするフィールドがありません。
@Entity
@Table(name = "USER")
public class User {
//fields, getters and setters
}
この名前付きクエリの使用方法がわかりません。
public List<User> findUsersRelatedToReport(Report report) {
TypedQuery<User> query = entityManager.createNamedQuery(Report.NAMED_QUERY.FIND_USERS, User.class)
.setParameter("report", report);
return query.getResultList();
}
最後に私は例外があります:
Type specified for TypedQuery [package_name.User] is incompatible with query return type [interface java.util.Set]
どんな助けでも大歓迎です。