0

我有用户插入数据的网络表单。然后有存储在数据库中。但是我在数据库中的记录有问题。我使用 spring 3、jpa、eclipselink 和 mysql。在实体中生成@Id。当我使用策略时:GenerationType.AUTO,GenerationType.TABLE 数据未存储并且错误:
异常 [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException 内部异常:java.sql.SQLException:未找到基表或视图,来自服务器的消息:“表'sklep.sequence'不存在”错误代码:1146调用:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +?WHERE SEQ_NAME = ?bind => [2 个参数绑定]
使用 GenerationType.IDENTITY、GenerationType.SEQUENCE 时,仅存储第一个数据,然后:javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence .exceptions.DatabaseException 内部异常:java.sql.SQLException:null,来自服务器的消息:“键 'PRIMARY' 的重复条目 '0'” 错误代码:1062
发生了什么?这是mysql的问题还是什么?帮助!谢谢!

4

1 回答 1

1

使用 TABLE id 生成时需要创建表 SEQUENCE。如果您使用 EclipseLink 生成 DDL,它将为您创建。您还需要为每个生成器名称插入一行。

对于 IDENTITY id 生成,您需要在创建表时为您的 id 使用 IDENTITY 类型。

见, http ://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Sequencing

于 2013-07-18T13:14:23.003 回答