如何解决与JPA具有多对多关系的SQL查询
我在spring-jpa-project中有一个多对多关系,但是我找不到一种方法来让我的Query执行它应该做的事情。也许任何人都可以帮忙...
我有三个实体:
用户:
@Entity
public class User {
@Id private String userName;
}
UserSettings
@Entity
public class UserSettings {
@Id private String userName;
private EMailDeliveryType emailDelivery;
}
和事件
@Entity
public class Event {
@Id
private Long id;
private Long dailyMailSent;
@ManyToMany(fetch = EAGER)
private Set<User> recipients;
}
我的存储库如下:
@Repository
public interface StateChangeEventRepository extends JpaRepository<Event,Long> {
@Modifying
@Query(
"UPDATE Event s SET s.dailyMailSent = extract(EPOCH FROM CURRENT_TIMESTAMP) "
+ "WHERE s.dailyMailSent IS NULL "
+ "AND ("
+ " s.recipients IS EMPTY OR "
+ " (SELECT user FROM User user JOIN UserSettings settings ON "
+ " settings.userName = user.userName WHERE settings.emailDelivery = 25) "
+ " NOT MEMBER OF s.recipients"
+ " )")
void markUnprocessableDailyEventsAsFinished();
}
所以我要做的是标记查找所有具有DailyMailSent = null的事件,或者它们没有接收者,或者没有任何接收者的userSetting具有特定的emailDelivery。 此查询不起作用,因为子查询返回了多个用户,然后我遇到错误:
ERROR: more than one row returned by a subquery used as an expression
有人知道如何解决此问题吗?我尝试了几种选择,但是没有一个起作用。
提前感谢,马蒂亚斯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。