0

我在 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!

4

1 回答 1

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  */
}
于 2013-09-03T06:27:19.447 回答