弹簧数据,由View

时间:2019-07-15 18:19:37

标签: java spring spring-data-jpa

我正在使用Spring-data,并且我想通过使用View替换由表映射的集合。但是当我保存EntityParent包含此集合时,可以看到它尝试在View中插入数据:

org.springframework.dao.InvalidDataAccessResourceUsageException:无法执行批处理; SQL [插入到view_data1_data2(data1_id_fk,data2_id_fk)值(?,?)中]];

原因:java.sql.BatchUpdateException:ORA-01779:无法修改映射到非键保留表的列

当我尝试更新EntityParent时,出现此错误:

org.springframework.dao.InvalidDataAccessResourceUsageException:无法执行批处理;从view_data1_data2中删除,其中data1_id_fk =?

由以下原因引起:java.sql.BatchUpdateException:ORA-01752:如果没有一个完全保留键的表,则无法从视图中删除。

我想知道,是否有可能在保存或更新时不保留视图中的任何数据?

我试图在注释JoinColumn或Column上将可更新和可插入设置为false,但这是行不通的。我尝试了@ReadOnlyProperty,结果似乎一样。

class EntityParent {
...
    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "view_data1_data2",
            joinColumns = {@JoinColumn(name = "data1_id_fk", referencedColumnName = "id", updatable = false, insertable = false)},
            inverseJoinColumns = {@JoinColumn(name = "data2_id_fk", referencedColumnName = "id", updatable = false, insertable = false)})
    private List<MyData> myDatas;
...
}

0 个答案:

没有答案