使用View作为JoinTable删除对象

时间:2018-04-20 13:51:59

标签: java hibernate jpa

我遇到了以下问题。 我针对数据库编写了回归测试。最后,我会清理创建的实体。 除了删除一个实体外,一切都有效。

错误是:

View or function 'OrganizationUserView' is not updatable because the modification affects multiple base tables.

JPA-Annotation如下:

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "OrganizationUserView", joinColumns = {
@JoinColumn(name = "OrganizationID")},
inverseJoinColumns = {
  @JoinColumn(name = "MemberID")}
  )
private Set<Member> members = new HashSet<>();

之前已删除组织和成员对象。

有谁知道如何删除对象?

2 个答案:

答案 0 :(得分:0)

目前,我已经使用了数据库触发器

CREATE TRIGGER IO_Trig_DEL 
  ON  [dbo].[OrganizationUserView]
  INSTEAD OF DELETE
AS BEGIN
  SET NOCOUNT ON;
END
GO

答案 1 :(得分:0)

创建一个表示联接表的单独实体,该实体映射到视图,而不使用@JoinTable。

此处讨论(论坛已死,因此使用archive.org):https://web.archive.org/web/20170113182538/https://forum.hibernate.org/viewtopic.php?f=1&t=985505&sid=dc550e634938fa271b76ecf60119d189