簡體   English   中英

JPA:ManyToMany關系的限制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM