【发布时间】:2013-09-03 06:17:00
【问题描述】:
我正在像这样在 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 映射。
我需要一个休眠或视图来解决这个问题。
我在 .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 into VW_PIKAP_APPROLE (APPROLE_NAME, APPROLE_ID) values (?, ?)
所以当我使用调试器时,java 实体的 isPikap 值为 1!
【问题讨论】:
-
你不能只在基础表上设置
DEFAULT 1而不在视图中包含该列吗? -
没有。是不可能的。因为底层表是很多子系统的通用
标签: java sql oracle hibernate hibernate-mapping