gpt4 book ai didi

java - GenerationType.IDENTITY 的 JPA 持久化失败

转载 作者:行者123 更新时间:2023-11-30 09:37:53 26 4
gpt4 key购买 nike

我有一个在 JBOss 5、JPA 和 Derby 中运行良好的旧应用程序。我现在将它移植到 JBoss 6,却发现系统无法插入带有错误消息的实体:

“ID”列不能接受 NULL 值。

其中,ID为标识列:

@Entity
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
int id;
...
}

我检查了生成的模式,它看起来不错:

CREATE TABLE "APP"."CUSTOMER" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
"EMAIL" VARCHAR(255),
"NAME" VARCHAR(255),
"PHONE" VARCHAR(255));

您可以在下面的链接中查看应用程序的代码。感谢您的帮助。

https://docs.google.com/open?id=0B_lXBrNTL1s-R3NHb2hYZlJ1Znc

拉吉

最佳答案

好吧,我有事情要做。基本上,当您使用 JPA 在 Derby 中生成模式时,它会很好地创建表,但是插入带有标识列的行时会出现问题。解决方案不是从 JPA 生成模式。我手动创建了模式并注释掉了模式生成选项。

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="ContactsPU" transaction-type="JTA">
<jta-data-source>java:DerbyDS</jta-data-source>
<class>com.webage.contacts.Customer</class>
<!--
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
-->
</persistence-unit>
</persistence>

关于java - GenerationType.IDENTITY 的 JPA 持久化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355601/

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