GenerationType和MySQL错误

时间:2013-07-18 10:18:41

标签: mysql jpa persistence eclipselink

我有用户插入数据的网络表单。然后存储在数据库中。但我在db中遇到记录问题。我使用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 +?在哪里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,来自服务器的消息:“重复条目'0'表示密钥'PRIMARY'” 错误代码:1062
到底是怎么回事?这是mysql的问题还是什么?救命!谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

请参阅, http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Sequencing