jpa ORA-32795:无法插入生成的始终标识列|休眠ORM

qgelzfjb  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(134)

我正在尝试使用JPA插入Oracle视图。JPA生成以下SQL语句-

insert into home_view (id, email, first_name, last_name) values (default, ?, ?, ?)

当它执行查询时,Oracle DB抛出以下错误-

ORA-32575: Explicit column default is not supported for modifying views

根据我的理解,上面的查询不能与视图一起工作,因为如果视图的基础表列是IDENTITY列,我们就不能插入视图。
我们在Hibernate中是否有任何选项可以帮助在将对象保存到DB时排除标识列?
注意-我不想使用原始SQL语句来插入我的对象。
我使用了GenerationType.SEQUENCE策略,它工作得很好,但唯一的问题是我必须提供序列名。我不想在Java实体中提供硬编码的序列名。
谢谢你的帮忙!

zfycwa2u

zfycwa2u1#

use:

@Id @GeneratedValue(strategy=IDENTITY)
Long id;

UPDATE:对于Oracle上的 * 视图 *,请使用:

  • Hibernate 6.2中的@Id @Generated(即将发布),或
  • SelectGenerator,在Hibernate 5或6中。

但是请注意,您必须标识实体的@NaturalId,否则Hibernate无法定位刚刚插入的行以检索生成的id。
在您的情况下,我想自然ID是电子邮件地址。

相关问题