我有用户插入数据的网络表单。然后存储在数据库中。但我在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的问题还是什么?救命!谢谢!
答案 0 :(得分:1)
使用TABLE id生成时,需要创建表SEQUENCE。如果您使用EclipseLink生成DDL,它将为您创建。您还需要为每个生成器名称插入一行。
对于IDENTITY ID生成,您需要在创建表时为您的ID使用IDENTITY类型。
请参阅, http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Sequencing