[英]JPA: Restriction in ManyToMany relations
我有兩個實體:用戶和事件。 每個用戶都有他注意的事件列表。
@Entity
@Table(name = "user")
public class User {
@Id
@Column(name = "login", length = 64)
protected String login;
@ManyToMany
@LazyCollection(LazyCollectionOption.FALSE)
@JoinTable(name = "user_events",
joinColumns = {@JoinColumn(name = "login") },
inverseJoinColumns = {@JoinColumn(name = "event_id") })
protected List<Event> events;
}
@Entity
@Table(name = "events")
public class Event extends BaseEntity {
@Id
@Column(name = "event_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long eventId;
}
但是當用戶關注某個事件時,我無法從數據庫中刪除該事件。 似乎JPA設定了一些限制。 誰能告訴我如何解決這個問題? 先感謝您。
JPA沒有設定限制。 它位於您的數據庫中:連接表中的event_id
連接列是事件ID的外鍵。 您可能無法刪除該事件,因為某些用戶仍在引用它。
如果要刪除事件,並刪除用戶對事件的所有引用,則必須搜索引用該事件的所有用戶,從列表中刪除該事件,然后刪除該事件。
String jpql = "select u from User u inner join u.events e where e.id = :eventId;
// execute the query
for (User u : users) {
u.removeEvent(eventToDelete);
}
em.remove(eventToDelete);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.