java - Eclipselink:persistence.xml 连接到 derby glassfish 本地主机数据库(创建并填充数据库)

标签 java xml jpa glassfish eclipselink

我需要使用 eclipselink 连接到 localhost derby 数据库(在 glassfish 4 中)。 我想从类或 SQL 脚本生成数据库。 在 persistence.xml 文件中我有:

  <persistence-unit name="chapter04PU" transaction-type="JTA">
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
     <class>org.agoncal.book.javaee7.chapter04.Book</class>
     <properties>
     <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
     <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
     <property name="javax.persistence.schema-generation.scripts.create-target" value="chapter04Create.ddl"/>
     <property name="javax.persistence.schema-generation.scripts.drop-target" value="chapter04Drop.ddl"/>
     <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
     <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/chapter04DB;create=true"/>
     <property name="javax.persistence.jdbc.user" value="APP"/>
     <property name="javax.persistence.jdbc.password" value="APP"/>
     <property name="javax.persistence.sql-load-script-source" value="insert.sql"/>
     <property name="eclipselink.logging.level" value="INFO"/>
     </properties>

最佳答案

我可以让它发挥作用。上述持久性单元是正确的。 假设在 Entity Book 类中 id 有以下注释: @ID @GenerateValue 私有(private)长ID;

具有以下持久性单元:

   <persistence-unit name="Book"  transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
     <class>com.tutorial.Book</class>
      <properties>
       <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
       <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
       <property name="javax.persistence.schema-generation.scripts.create-target" value="create.ddl"/>
       <property name="javax.persistence.schema-generation.scripts.drop-target" value="drop.ddl"/>
       <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
       <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/library_db;create=true"/>
       <property name="javax.persistence.jdbc.user" value="APP"/>
       <property name="javax.persistence.jdbc.password" value="APP"/>
       <property name="javax.persistence.sql-load-script-source" value="insert.sql"/>
       <property name="eclipselink.logging.level" value="INFO"/>
   </properties>

脚本如下:

create.ddl ------------------------------------- -----------------------

CREATE TABLE book (
    ID BIGINT NOT NULL,
    DESCRIPTION VARCHAR(255),
    ILLUSTRATIONS SMALLINT DEFAULT 0,
    ISBN VARCHAR(255),
    NBOFPAGE INTEGER,
    PRICE FLOAT,
    TITLE VARCHAR(255),
    PRIMARY KEY (ID))

CREATE TABLE SEQUENCE (
    SEQ_NAME VARCHAR(50) NOT NULL,
    SEQ_COUNT DECIMAL(15),
    PRIMARY KEY (SEQ_NAME))

INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 0)

drop.ddl ------------------------------------- -------------

DROP TABLE book

DELETE FROM SEQUENCE WHERE SEQ_NAME = 'SEQ_GEN'

插入.sql---------------------------------------- ---

INSERT INTO BOOK(ID, TITLE, DESCRIPTION, ILLUSTRATIONS, ISBN, NBOFPAGE, PRICE)
values (1000, 'Beginning Java EE 6', 'Best Java EE book ever', 1, '1234-5678', 450, 49)

INSERT INTO BOOK(ID, TITLE, DESCRIPTION, ILLUSTRATIONS, ISBN, NBOFPAGE, PRICE)
values (1001, 'Beginning Java EE 7', 'No, this is the best ', 1, '5678-9012', 550, 53)

关于java - Eclipselink:persistence.xml 连接到 derby glassfish 本地主机数据库(创建并填充数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21137843/

相关文章:

java - 需要迭代具有同名子节点的 xml

如果 number<0,则 JavaFX 按钮可见

java - 为什么 Android 解析 XML 不正确?

java - Hibernate orphanRemoval 移除所有行,然后插入行

java - 如何检查jpa中一对多关系模型字段值的条件

hibernate - Play 框架中数据库级别的国际化

java - 我的 Java Hashmap 实现存在问题

java - 在Java中,不同类的列表?

xml - 使用 XPath 选择下一个链接

jquery - 如何使用ajax从另一个div(如iFrame)填充div中的xml文档?