我想通过注释@Query通过Jpa存储库进行Join查询。我有三个表。
本机查询是:
select application.APP_ID
from user, customer, application
where user.USE_CUSTOMER_ID = customer.CUS_ID
and application.APP_CUSTOMER_ID = customer.CUS_ID
and user.USE_ID=1;
现在我有了Table Hibernate实体,所以我在ApplicationRepository中尝试过
@Query(SELECT application FROM Application a
INNER JOIN customer c ON c.customer.id = a.customer.id
INNER JOIN user u ON u.customer.id = c.customer.id
INNER JOIN application a ON a.user.id = u.id
WHERE
u.id = :user.id)
List<Application> findApplicationsByUser(@Param("User") User user);
日志说
意外的标记
有什么想法吗?
我的表实体
Application.java:
@Entity
@Table
public class Application extends BaseSimpleEntity {
...
@ManyToOne(optional = false)
private Customer customer;
...
}
Customer.java:
@Entity
@Table
public class Customer extends BaseSimpleEntity {
...
@OneToMany(mappedBy = "customer")
private List<User> users;
@OneToMany(mappedBy = "customer")
private List<Application> applications;
...
}
User.java:
@Entity
@Table
public class User extends BaseSimpleEntity {
...
@ManyToOne(optional = false)
private Customer customer;
...
}
您不需要JPA中的ON子句,因为借助映射注释,JPA已经知道如何关联实体。
此外,您选择的application
不是查询中定义的别名。
您的加入毫无意义。
查询应该只是
select application FROM Application a
join a.customer c
join c.users u
where u.id = :userId
阅读Hibernate文档以了解HQL和联接的工作方式。
问题内容: 我想使用带有注释@Query的Jpa存储库进行Join查询。 我有两个表: 和: 本机查询是: 现在我有一个表休眠实体用户和区域 所以我尝试了UserRespository 日志说: 意外的标记: 有什么主意吗? 我的表实体 问题答案: 您遇到此问题的原因有两个。 JPQL查询无效。 您尚未在基础JPQL查询可以利用的实体之间创建关联。 在JPQL中执行联接时,必须确保尝试联接的实体之
本机查询为: 现在我有了表Hibernate实体,所以我在ApplicationRepository中尝试了 日志上说
我想使用带有注释@query的Jpa存储库创建一个连接查询。 我有两张桌子: 和: 我的表实体
我正在开发一个Spring Boot应用程序,并在我的存储库中挣扎于SQL查询。查询应该选择员工的所有ID,从来没有张贴在我的WebApp。 在MySQL Workbench中,遵循语句ist working propper和我实现了预期的结果。 我不知道如何使用“on”并定义它的路径。
问题内容: 我尝试实现JPA自定义存储库。 我有一个这样的过滤器对象: 从前端,我根据用户输入创建FilterPatient的实例。 因此,例如,用户可以值姓和cf属性或值和姓,等等。 我想实现一个自定义存储库,如下所示: 题: 根据用户输入,我必须执行其他查询,那么如何管理存储库?我必须编写查询方法以涵盖输入字段的不同组合,并且必须在服务中编写有关方法存储库调用的逻辑?或者我可以更好地自定义方法
我尝试实现一个JPA自定义存储库。 我有一个过滤器对象,如下所示: 在前端,我根据用户输入创建了一个FilterPatient实例。 按用户分类的示例查询 和其他可能的配置,例如,在FilterPatient的cf属性为NULL中,查询将变为: