我有一个场景,比如我有一个带有变量(比如 x)的实体,它指向 DB 中的虚拟列。我使用这个变量 x 只是为了将一些数据投影到 UI 上,并且不希望在更新或创建实体对象时插入或更新它。
为了实现这一点,我引入了可插入和可更新为假,如下所示
@Column(name = "VIRTUAL_COLUMN_NAME_IN_DB", length = 4000, updatable = false, insertable = false)
private String x;
我还介绍了相关的 getter 和 setter。
通过我引入的注释,我希望变量 x 不包含在插入或更新操作中
但是,事实并非如此,我看到它出现在插入和更新操作中,这反过来导致我在下面出现数据库错误
org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQL state [99999]; error code [54017]; ORA-54017: UPDATE operation disallowed on virtual columns
; nested exception is org.hibernate.exception.GenericJDBCException: ORA-54017: UPDATE operation disallowed on virtual columns
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:651)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:105)
请让我知道如何在基于 Spring 的应用程序中使用 Hibernate JPA 中的虚拟列