我试图转换这个JPQL查询;
SELECT s FROM QuestionSet s JOIN s.questions q WHERE q.appointedRepetition.date < :tomorrow
DateTime tomorrow = DateTime.now().plusDays(1).withTime(0,0,0,0);
CriteriaBuilder criteriaBuilder = JPA.em().getCriteriaBuilder();
CriteriaQuery<QuestionSet> query = criteriaBuilder.createQuery(QuestionSet.class);
Root<QuestionSet> root = query.from(QuestionSet.class);
Join<QuestionSet, Question> questionJoin = root.join("questions");
Predicate ownerCondition = criteriaBuilder.equal(root.get("owner"), owner);
Predicate dateCondition = criteriaBuilder.lessThan(questionJoin.<DateTime>get("appointedRepetition.date"), tomorrow);
query.where(criteriaBuilder.and(ownerCondition, dateCondition));
List<QuestionSet> result = JPA.em().createQuery(query).getResultList();
return result;
play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: Unable to resolve attribute [appointedRepetition.date] against path [null]]]
@Entity
@SequenceGenerator(name = "wordlist_seq", sequenceName = "wordlist_seq")
public class QuestionSet {
@OneToMany(cascade = CascadeType.ALL)
private List<Question> questions;
...
}
@Entity
@SequenceGenerator(name = "question_seq", sequenceName = "question_seq")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Question{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "question_seq")
private Long id;
...
}
@OneToOne(cascade = CascadeType.ALL)
private AppointedRepetition appointedRepetition;
您需要另一个join,但我不能保证它会起作用,因为实体定义要么缺失,要么不完整,而且并非所有关系都按照您的注释中所述定义。不管怎样,我会试试这个:
Join<Question, AppointedRepetition> repetition = questionJoin.join("appointedRepetition");
Predicate dateCondition = criteriaBuilder.lessThan(repetition.get("date"), tomorrow);
对了,我看到你在用Joda的DateTime。我从来没有将它与JPA CriteriaBuilder一起使用过,所以我不能保证它能工作。
是否可以将像这样的JPQL sting转换为对象,在该对象中我可以检查查询的根是否为(使用),或者以不同的方式执行相同的操作(不转换为)? JPA文档非常简单(例如,的类注释说“返回一个CriteriaBuilder的实例以创建CriteriaQuery对象。”-10或20个句子和更多的引用也无妨)。因此,它没有提到任何关于反转进程的内容。 将jpql连接查询转换为条件api以及如何将带有子查询的
我需要将这个sql查询转换为hibernate条件,请大家帮忙。 按名称顺序按应用描述限制3从设备组中选择名称,计数(*)为应用
任何帮助都将不胜感激!
具有由5个实体组成的简单对象模型: 公司 公司与单个组织关联。(团体和俱乐部也与单个组织关联——它们是单向的,这意味着该组织不包含对其所有者的引用)。一个组织可能有0个或多个地址。 子查询可用于基于特定zipcode(地址的属性)访问公司对象。这里是一个JPQL查询,可以使用特定的zipcode访问这些公司。 @Query("选择p从公司p,组织组织(p.organization=org.id)和
我在Mysql中有一个查询, 我已经完成了简单的查询转换为hibernate查询。我将所有pojo类绑定到表。请指导我如何将多个连接查询转换为一个hibernate查询。
subcompany.hbm.xml 子单位表 branch.java 指定表 我需要帮助编写条件查询使用提供的SQL。