我在oracle 10g中创建了一个像这样的视图:
CREATE OR REPLACE FORCE VIEW vw_pikap_approle
AS
SELECT approle_id, approle_name, creation_timestamp,1 is_pikap
FROM approle
WHERE is_pikap = 1
/
但插入后
INSERT INTO vw_pikap_approle (approle_id, approle_name, creation_timestamp)
VALUES (hibernate_sequence.NEXTVAL, 'dddd', SYSDATE)
is_pikap为0(在DB中为默认值),因此is_pikap在视图中固定为1。
在Oracle视图中插入时是否有设置固定值的解决方案
这种需求是因为在Java应用程序中减少了Hibernate映射。
我需要一个针对此问题的休眠或查看解决方案。
我正在使用may .hbm.xml的这个映射:
<property
name="isPikap"
type="int"
column="IS_PIKAP"
not-null="true"
length="1"
formula="1"
/>
在我的java实体中:
private int isPikap = 1;
public int getIsPikap() {
return isPikap;
}
public void setIsPikap(int i) {
isPikap=1;
}
但是使用hibernate insert生成的查询是:
Hibernate: insert into VW_PIKAP_APPROLE (APPROLE_NAME, APPROLE_ID) values (?, ?)
所以当我使用调试器时,java实体的isPikap值是1!
答案 0 :(得分:1)
我认为您无法在此视图中插入数据,因为is_pikap是从表达式派生的 使用Hibernate,我想您可以创建视图映射,使is_pikap最终并初始化为1
@Entity
@Table("vw_pikap_approle")
class vw_pikap_approle {
@Column(name="is_pikap")
private final int is_pikap = 1;
/* Other properties with accessors */
}