このクエリを作成しようとしましたが、何か不足していると思います。関連するクラスは次のとおりです。
- ユーザー
- ダイエット
- 毎日の食事
これが私のエンティティの関連部分です(非常に単純なものです):
public class User {
@Column(name = "User_Name", nullable = false, length = 15, unique = true)
public String userName;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true)
@PrimaryKeyJoinColumn
public Diet userDiet;
}
public class Diet {
@OneToOne(optional = false)
@JoinColumn(name = "User_Id")
protected User user;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinTable(name = "UsersDiets_DailyDiets", joinColumns = @JoinColumn(name = "User_Id"), inverseJoinColumns = @JoinColumn(name = "DailyDiet_Id"))
protected Collection<DailyDiet> userDailyDiets;
}
public class DailyDiet {
@Column(name = "Day")
protected long day;
}
特定の日の特定のユーザーの毎日の食事を簡単に取得したいと思います。
public UserDiet findByUserNameAndDay(String userName, long day)
しかし、それを機能させることはできないようです。そのために 2 つの異なる CriteriaQuery オブジェクトを作成する必要がありますか? 2 つの異なる述語を作成した場合、それらをどのように使用すればよいですか? 誰かがこの単純なクエリで私を助けることができれば、感謝しています (私は JPA 基準 API にまったく慣れていません)。
ありがとう!!!