[英]Query with JPA criteria API
试图建立此查询,但我想我丢失了一些东西。 以下是涉及的类:
这是我实体的相关部分(一个非常简单的部分):
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对象吗? 如果创建两个不同的谓词,该如何使用? 如果有人可以通过这个简单的查询帮助我,请多谢(我对JPA标准API还是很陌生)。
谢谢!!!
通过添加到DailyDiet类中来解决它:
@ManyToOne
protected Diet userDiet;
然后在我的DailyDietDao中,以下谓词:
Predicate userNameCondition = qb.equal(p.get(DailyDiet_.userDiet).get(UserDiet_.user).get(BaseUser_.userDetails).get(UserDetails_.userName),
userName);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.