Java 坚持在spring数据应用程序中查找QueryDSL谓词
我在查询一些数据时遇到问题,我将简要解释我的问题并举例说明 我使用Spring数据、QueryDSL和MySQL 我想在queryDSL方法中这样查询。一个具体的例子只是一个简单的例子来给出一个想法 例如,有两个表Employee和Certificate。两者之间的关系是一(员工)对多(证书) 以下是表格Java 坚持在spring数据应用程序中查找QueryDSL谓词,java,mysql,spring-data-jpa,spring-data,querydsl,Java,Mysql,Spring Data Jpa,Spring Data,Querydsl,我在查询一些数据时遇到问题,我将简要解释我的问题并举例说明 我使用Spring数据、QueryDSL和MySQL 我想在queryDSL方法中这样查询。一个具体的例子只是一个简单的例子来给出一个想法 例如,有两个表Employee和Certificate。两者之间的关系是一(员工)对多(证书) 以下是表格 Employee (id, first_name, last_name); Certificate (id, name, date, fk_emp); 以下是实体: @Entity @Tab
Employee (id, first_name, last_name);
Certificate (id, name, date, fk_emp);
以下是实体:
@Entity
@Table(name = "EMPLOYEE")
class Employee {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@OneToMany(mappedBy = "employee", cascade = CascadeType.ALL)
private List<Certificate> certificates = new ArrayList<>();
}
@Entity
@Table(name = "CERTIFICATE")
class Certificate {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "CERTIFICATE_NAME")
private String certificateName;
@Column(name = "DATE")
private Date date;
@ManyToOne
@JoinColumn(name = "REF_EMPLOYEE")
private Employee employee;
}
谢谢您本机JPQL查询:
SELECT * FROM EMPLOYEE A
LEFT JOIN CERTIFICATE B ON A.ID = B.REF_EMPLOYEE AND DATE BETWEEN CAST('2014-12-22' AS DATE) AND CAST('2015-12-22' AS DATE);
query.from(employee)
.leftJoin(employee.certificates, certificate)
.on(certificate.date.between('from_date', 'to_date'))
.list(employee);
Querydsl连接变量:
SELECT * FROM EMPLOYEE A
LEFT JOIN CERTIFICATE B ON A.ID = B.REF_EMPLOYEE AND DATE BETWEEN CAST('2014-12-22' AS DATE) AND CAST('2015-12-22' AS DATE);
query.from(employee)
.leftJoin(employee.certificates, certificate)
.on(certificate.date.between('from_date', 'to_date'))
.list(employee);
注意:此处的日期格式可能不同,请根据您的需要更改同时,我想获取所有没有任何证书的员工Left join将从员工表中提取所有员工,即,它将同时提取“有证书的员工”和“无证书的员工”。请尝试在mysql中运行查询,并根据您的需要构建查询框架。请让我知道任何帮助。我在第3行有一个错误:无法解析自QueryDsl 3.0.0版本以来引入的“JPQLQuery”on()中的方法“on”。我建议在使用旧版本时将您的版本升级到3.0.0。另外,您是否同时尝试了本机sql查询?我如何使用本机sql查询,因为我尝试在@query(“”)中添加请求;但不起作用