Java 在Oracle视图中为Hibernate insert设置固定值

Java 在Oracle视图中为Hibernate insert设置固定值,java,sql,oracle,hibernate,hibernate-mapping,Java,Sql,Oracle,Hibernate,Hibernate Mapping,我正在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,

我正在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映射

我需要一个解决这个问题的hibernate或view解决方案

我将此映射用于may.hbm.xml:

<property
        name="isPikap"
        type="int"
        column="IS_PIKAP"
        not-null="true"
        length="1"
        formula="1"
        />
但使用hibernate insert生成的查询是:

Hibernate: insert into VW_PIKAP_APPROLE (APPROLE_NAME, APPROLE_ID) values (?, ?)

所以当我使用调试器时,java实体的isPikap值是1

我认为您无法将数据插入此视图,因为is_pikap是从表达式派生的。
使用Hibernate,我想您可以创建视图映射making is_pikap final并初始化为1

@Entity
@Table("vw_pikap_approle")
class vw_pikap_approle {
  @Column(name="is_pikap")
  private final int is_pikap = 1;

  /* Other properties with accessors  */
}

你不能只在基础表上设置
default1
,而不在视图中包含该列吗?不,这是不可能的。由于基础表是许多子系统的通用表,那么如何使用xml进行映射呢?请使用公式
默认值在xml中不可用。从xml中删除公式并将is_pikap设置为固定值,然后插入(记住将视图代码更改为可插入视图)。我认为这是唯一的办法
@Entity
@Table("vw_pikap_approle")
class vw_pikap_approle {
  @Column(name="is_pikap")
  private final int is_pikap = 1;

  /* Other properties with accessors  */
}