Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于GenerationType.IDENTITY,JPA持久化失败_Java_Jpa_Derby_Jboss6.x - Fatal编程技术网

Java 对于GenerationType.IDENTITY,JPA持久化失败

Java 对于GenerationType.IDENTITY,JPA持久化失败,java,jpa,derby,jboss6.x,Java,Jpa,Derby,Jboss6.x,我有一个在JBoss5、JPA和Derby中运行良好的旧应用程序。我现在将其移植到JBoss 6,却发现系统无法插入实体,错误消息如下: 列“ID”不能接受空值 其中,ID是一个标识列: @Entity public class Customer { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) int id; ... } 我检查了生成的架构,它看起来不错: CREATE TABLE "APP"."

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

列“ID”不能接受空值

其中,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));
您可以在下面的链接中查看应用程序的代码。感谢您的帮助


拉吉:嗯,我有事情要做。基本上,当您在Derby中使用JPA生成模式时,它可以很好地创建表,但是插入带有标识列的行时会出现问题。解决方案不是从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>

爪哇:德比
com.webage.contacts.Customer

您无需自己创建方案即可解决此问题。 只需将GenerationType.IDENTITY更改为GenerationType.TABLE即可

@GeneratedValue(策略=GenerationType.TABLE)

我在德比也遇到了同样的问题,这就解决了