java - 删除hibernate实体而不(尝试)删除关联表( View )条目

标签 java hibernate annotations many-to-many

实体A和B使用链接表AtoB具有多对多关系。

如果实体A被删除,相关的链接也会被hibernate删除。到目前为止一切顺利。

我的问题是,我的链接表是一个隐藏了更复杂关系的 View ,并且在这种情况下工作得很好,除非 hiberate 尝试从 View 中删除链接行,从而导致数据库提示。

@Entity A...   

@ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "AtoB", 
    joinColumns = @JoinColumn(name = "A_ID"), 
    inverseJoinColumns = @JoinColumn(name = "B_ID"))
 public Set<A> getASet() {
     return ASet;
 }

有没有办法让 hibernate 不删除链接行?我还没有找到任何级联选项或在关联上使用 updateable=false 等的能力。

最佳答案

我遇到了这个问题,以下方法对我有用:

@ManyToMany
@JoinTable(name = "V_LoanSecuredUser",
            joinColumns = @JoinColumn(name = "loanAdditionalInfo_id", updatable = false),
            inverseJoinColumns = @JoinColumn(name = "userAuthentication_Id", updatable = false))
@Persister(impl = ReadOnlyCollectionPersister.class)
@Immutable
public class ReadOnlyCollectionPersister extends BasicCollectionPersister {
    public ReadOnlyCollectionPersister(Collection collection,
            CacheConcurrencyStrategy cache, Configuration cfg,
            SessionFactoryImplementor factory) throws MappingException,
            CacheException {
        super(collection, cache, cfg, factory);
    }

    @Override
    protected boolean isRowDeleteEnabled() {
        return false;
    }

    @Override
    protected boolean isRowInsertEnabled() {
        return false;
    }
}

关于java - 删除hibernate实体而不(尝试)删除关联表( View )条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763863/

相关文章:

machine-learning - 使用带注释的文档创建注释任务

java - 仅注释 ORM 框架的建议 (Java)

java - 如何在 Spring AspectJ 中使用 "declare"指令?

java - 在后端(java spring boot)排序中,如何使用可分页的别名进行排序?没有父表作为前缀

java - 如何获取二维数组中行和列的长度?

java - 在java中加载图像

java - android中的标准连接超时和套接字超时应该是什么

java - 没有单独的连接表的 Hibernate @OneToMany

spring - 异常 : expected<org. hibernate.exception.ConstraintViolationException> 但为 <java.lang.NoClassDefFoundError>

java - Hibernate 从其他表中获取列的值