gpt4 book ai didi

java - 尝试使用自动生成的 ID 保留新的(非托管)实体会导致错误

转载 作者:行者123 更新时间:2023-11-30 05:43:48 25 4
gpt4 key购买 nike

我有一个 MyEntity 类,其中有几列,其中一列是自动递增 id。 MyEntity 如下所示:

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Basic(optional = false)
@Column(nullable = false)
private Long id;

当我创建一个新的 MyEntity 并设置所有其他列(我没有设置 id 列),然后调用 persist 时:

MyEntity mn = new MyEntity("val1", "val2");
em.getTransaction().begin();
em.persist(mn);
em.getTransaction().commit();
em.close();

出现以下错误:

Query: DataModifyQuery(name="SEQUENCE" sql="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?")

Caused by: java.sql.SQLSyntaxErrorException: Table/View 'SEQUENCE' does not exist.

我尝试更改@GenerateValue的策略,但没有成功。网上有很多类似的问题,但没有明确的解决方案。

我是否需要为新的非托管实体中的 id 列分配特定值?我是否需要在 id 列所在的表中设置特定值(我只设置它是主键)?

最佳答案

使用身份通过DB生成ID:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

不要添加Optional=False、Nullable=False。 RDBS 中的主键永远不会为空。

关于java - 尝试使用自动生成的 ID 保留新的(非托管)实体会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55187716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com