我正在使用 Spring Boot,并尝试利用 HQL 在 3 个表之间设置 LEFT JOIN。
我拥有的三个实体是“使用情况”、“订阅期间”和“订阅”。实体类中已设置必要的Hibernate注解。
- 使用和订阅周期:多对一(一个订阅周期可以有多个使用)
- 订阅和订阅周期:多对一(一个订阅可以有多个订阅周期)。
目标:我想通过提供订阅 ID 来获取所有用法,并且用法的标题为"new"。而且,我想在单个数据库请求中完成此操作
我有:
String hql =
"SELECT DISTINCT u " +
"FROM Usage u " +
"LEFT JOIN u.subscriptionPeriod p " +
"LEFT JOIN p.subscription s " +
"WHERE s.remoteId = :remoteId AND u.title='NEW'";
目前,“FROMUsage”似乎存在语法错误。它显示“无法解析符号用法”
怎样才能实现我想要的目标?我也愿意听取替代解决方案。谢谢。
最佳答案
我可能以一种更复杂的方式思考它。方法上的这个 @Query
效果很好。希望这对某人有用。
@Query(
"SELECT u " +
"FROM usages u " +
"LEFT JOIN u.subscriptionPeriod p " +
"LEFT JOIN p.subscription s " +
"WHERE u.paymentStatus = 'NEW' AND s.remoteId = :remoteId"
)
public List<Usage> find(@Param("remoteId") String param)
关于java - Spring Boot JPA LEFT JOIN 在 3 个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57928286/