我有一个场景,比如我有一个带有变量(比如x)的实体,它指向DB中的虚拟列。我使用这个变量x只是为了将一些数据投影到UI上,而不希望在Iam更新或创建entity对象时插入或更新它。
为了实现这一点,我引入了insertable和updatable为false,如下所示
@Column(name = "VIRTUAL_COLUMN_NAME_IN_DB", length = 4000, updatable = false, insertable = false)
private String x;我还介绍了相关的getter和setter方法。
使用我介绍的注释,我预计变量x不会包含在插入或更新操作中
但是,事实并非如此,我在insert和update操作中看到了它,这反过来又导致下面的DB错误
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)请告诉我如何通过Hibernate JPA在基于Spring的应用程序中使用虚拟列
发布于 2016-03-23 14:26:20
你试过@瞬态注解吗?应该是这样的:“这个注解指定属性或字段不是持久的。它用于注解实体类、映射超类或可嵌入类的属性或字段。”
https://docs.oracle.com/javaee/5/api/javax/persistence/Transient.html
https://stackoverflow.com/questions/15826762
复制相似问题