ユーザとタスクがあります。各ユーザーは複数のタスクセットを持つことができ、その逆もあります。私はタスク "メンバー"に含まれているユーザーを呼び出しますが、メンバーエンティティはありません。暗黙的であり、注釈@JoinTable(name = "member"...
で宣言されています。コード:関連テーブルを使用したJPQL/HQLクエリ
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@ManyToMany
@JoinTable(name = "member", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "task_id"))
private Set<Task> tasks = new HashSet<>();
}
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@ManyToMany(mappedBy = "tasks")
private Set<User> users = new HashSet<>();
private Calendar initialDate;
private Calendar finalDate;
}
私の問題は、私は人が本当の豆(@Entity注釈付きとか)を持っていけないので、私は私が持っているとメンバー実体ウィッヒマップと仮定すると、(ように私のリポジトリに何もできない、JPQLクエリでありますユーザーとタスク):
FROM User u
WHERE NOT EXISTS
(
FROM Member m WHERE m.task.finalDate >= :inicial AND m.task.finalDate <= :final
AND m.user.id = u.id//Member here is a hipotetical/nonexistent entity
)
はJPQL/HQLまたは私はネイティブSQLクエリにフォールバックする必要がありますを使用して、このクエリにする方法をTheresの? Ty
明確JPQL文は「{別名を} SELECT」始まる... –
はHQLでの選択を使用したことがない、それは私の悩みのいずれかを解決する、照会? –
これは、有効なJPQL、つまり標準に準拠するJPAであることを意味します。それがなければ、彼らはHibernate以外では役に立たない。 –