【发布时间】:2016-09-06 12:56:32
【问题描述】:
我有以下实体:
@Entity
@Table(name = "ONE")
@SecondaryTable(name = "VIEW_TWO", pkJoinColumns = @PrimaryKeyJoinColumn(name="ONE_ID"))
public class CpBracket {
@Id
private Long id;
@Column(name="progress", table="VIEW_TWO", updatable = false, insertable = false)
private int progress = 0;
(...)
}
如您所见,该实体使用表 ONE 和(只读)视图 VIEW_TWO。当我持久化实体时,休眠正在执行插入视图:
insert into VIEW_TWO (ONE_ID) values (?)
它忽略了不可更新和不可插入的列 progress(这很好),它仍在尝试插入 ONE_ID 列的值。据我所知,@PrimaryKeyJoinColumn 注释将选定列标记为 insertable=false 和 updatable=false。
如何防止休眠将行插入辅助表(视图)?
【问题讨论】:
-
这里有一个副本,没有接受的答案。 stackoverflow.com/questions/34208122/…
-
作为替代方案,您可以映射为没有级联的
@OneToOne关系,而不是@SecondaryTable。我认为这可以解决问题。 -
如果你要持久化一个对象,如果你想阻止它插入,你希望SecondaryTable中的对象条目来自哪里?
-
@AlanHay,不可能使用一对一的关系映射整数。
-
其他解决方案是使用 Hibernate 特定的非 JPA
@Formula列。@SecondaryTable不行。