Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jpa-将jpql连接查询转换为条件api_Jpa_Jpql_Criteria Api - Fatal编程技术网

jpa-将jpql连接查询转换为条件api

jpa-将jpql连接查询转换为条件api,jpa,jpql,criteria-api,Jpa,Jpql,Criteria Api,我试图转换这个JPQL查询 SELECT s FROM QuestionSet s JOIN s.questions q WHERE q.appointedRepetition.date < :tomorrow 现在来看,我在CriteriaAPI部分中有几乎相同的代码 @Entity @SequenceGenerator(name = "wordlist_seq", sequenceName = "wordlist_seq") public class QuestionSet {

我试图转换这个JPQL查询

SELECT s FROM QuestionSet s JOIN s.questions q WHERE q.appointedRepetition.date  < :tomorrow
现在来看,我在CriteriaAPI部分中有几乎相同的代码

@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;
@实体
@SequenceGenerator(name=“wordlist_-seq”,sequenceName=“wordlist_-seq”)
公共类问题集{
@OneToMany(级联=级联类型.ALL)
私人名单问题;
...
}
@实体
@SequenceGenerator(name=“疑问”,sequenceName=“疑问”)
@继承(策略=继承类型。每个类的表)
公共抽象类问题{
@身份证
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“问题顺序”)
私人长id;
...
}
@OneToOne(级联=级联类型.ALL)
私人任命的请愿书任命的请愿书;

您需要另一个连接,但我不能保证它会起作用,因为实体定义缺失或不完整,并且并非所有关系都如您的注释中所述定义。无论如何,我会试试这个:

Join<Question, AppointedRepetition> repetition = questionJoin.join("appointedRepetition");
Predicate dateCondition = criteriaBuilder.lessThan(repetition.get("date"), tomorrow);
Join repeation=questionJoin.Join(“任命请求”);
谓词dateCondition=criteriaBuilder.lessThan(repeation.get(“日期”),明天);

顺便说一下,我看到你在用乔达的约会时间。我从来没有在JPA CriteriaBuilder中使用过它,所以我不能保证它能正常工作。

什么是
任命者申请
?也许它是一个与
问题
有多对一关系的实体?许多问题,一个任命的请愿书?在这种情况下,您需要另一个加入,我可以向您展示我添加的代码呈现模型片段,问题集与
Question
实例有
OneToMany
关系,每个
Questions
都与
任命者申请有
onetomone
关系,
任命请求
不了解
问题
,它只是单向关系。
@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<Question, AppointedRepetition> repetition = questionJoin.join("appointedRepetition");
Predicate dateCondition = criteriaBuilder.lessThan(repetition.get("date"), tomorrow);