尝试构建此查询,但我想我遗漏了一些东西。以下是涉及的类:
- 用户
- 饮食
- 日常饮食
以下是我的实体的相关部分(一个非常简单的部分):
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 很陌生)。
谢谢!!!