gpt4 book ai didi

sql - JPA、SQlite 没有这样的表 : SEQUENCE

转载 作者:行者123 更新时间:2023-12-03 17:35:50 26 4
gpt4 key购买 nike

我对 JPA 和 SQlite 有疑问。

我从表中创建了一个实体。我生成的实体看起来像:

    @Entity
@Table(name="sqliteTestTable")
public class Test implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;

@Column(name="name")
private String name;



public Test() {
}
------
}

当我尝试保留一些测试对象时,我收到以下错误:(我在mysql上执行了同样的代码没有问题)

Exception in thread "main" Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: no such table: SEQUENCE
Error Code: 0
Call: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?
bind => [50, SEQ_GEN_TABLE]
Query: DataModifyQuery(name="SEQ_GEN_TABLE" sql="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?")
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)

我该如何解决这个问题?

最佳答案

如果数据库平台不支持 IDENTITY,则 IDENTITY 将默认为 TABLE。

对于 TABLE,您需要创建一个序列表。如果您让 ElipseLink 创建表,它将自动为您创建,否则您需要自己创建。

如果 SQlite 支持 IDENTITY,那么您可以创建自己的 DatabasePlatform 子类来添加身份支持。

一般来说我不会推荐使用 IDENTITY,它不支持预分配并且会导致性能不佳。

关于sql - JPA、SQlite 没有这样的表 : SEQUENCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113182/

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