Java 使用Hibernate更新实体,该实体在DB中只有一个字段是可编辑的
我有一个实体类产品,我得到了整个实体的读授权,并且只在数据库中的价格字段上更新授权。因此,每当我调用productDao.update(product)时,即使我只更改了price字段的值,我也会得到Java 使用Hibernate更新实体,该实体在DB中只有一个字段是可编辑的,java,spring,oracle,hibernate,jpa,Java,Spring,Oracle,Hibernate,Jpa,我有一个实体类产品,我得到了整个实体的读授权,并且只在数据库中的价格字段上更新授权。因此,每当我调用productDao.update(product)时,即使我只更改了price字段的值,我也会得到 <2020-09-17 14:33:26.735 WARN 26939 --- [ (self-tuning)'] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1031, SQLState: 42000> <20
<2020-09-17 14:33:26.735 WARN 26939 --- [ (self-tuning)'] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1031, SQLState: 42000>
<2020-09-17 14:33:26.735 ERROR 26939 --- [ (self-tuning)'] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-01031: insufficient privileges>
<2020-09-17 14:33:26.736 INFO 26939 --- [ (self-tuning)'] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements>
<2020-09-17 14:33:26.737 ERROR 26939 --- [ (self-tuning)'] o.h.i.ExceptionMapperStandardImpl : HHH000346: Error during managed flush [org.hibernate.exception.SQLGrammarException: could not execute statement]>
尝试使用,生成的SQL将仅尝试更新已修改的列,而不是调用default.update()方法实现您自己的更新方法,其中您只需执行HQL update语句,该语句根据对象的值更新一个字段?也许您可以尝试将实体的其他属性注释为@Column(updateable=false),您可以尝试使用jpql/HQL更新该字段,或者将实体的每个其他属性设置为只读属性。