我正在使用Spring Boot,并尝试利用HQL在3个表之间建立一个LEFT JOIN。
我拥有的三个实体是Usage,SubscriptionPeriod和Subscription。在实体类中设置了必要的Hibernate注释。
用法和SubscriptionPeriod:多对一(SubscriptionPeriod可以有多种用法)
Subscription and SubscriptionPeriod:多对一(一个Subscription可以有多个SubscriptionPeriod)。
目标:我想通过提供订阅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'";
当前,“ FROM使用情况”周围似乎存在语法错误。它显示为“无法解析符号用法”
我怎样才能实现自己想要的?我也乐于听取其他解决方案。谢谢。
最佳答案
我可能以一种更复杂的方式来思考它。这个@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)