jpa - eclipselink 不会从带注释的 JPA 类生成表

标签 jpa jakarta-ee

我的 IDE 是 eclipse -Helios,我使用的是 mojarra jsf、mysql、eclipselink for jpa。

在我的项目中,如果我在 mysql 中手动创建表,我可以在“JPA 详细信息” View 中看到这些表。如果我不创建任何表,eclipse IDE 会显示错误,“无法解析表“trainingsession””。

我不确定出了什么问题。 JPA 什么时候创建这些表?如何 ?
我的persistence.xml如下,

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
  <persistence-unit name="wompower2" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>trainer</jta-data-source>
    <class>com.jsfcompref.trainer.entity.User</class>
    <class>com.jsfcompref.trainer.entity.TrainingSession</class>
    <class>com.jsfcompref.trainer.entity.Event</class>
    <class>com.jsfcompref.trainer.entity.AbstractEntity</class>
    <validation-mode>NONE</validation-mode>
    <properties>
      <property name="eclipselink.target-database" value="MySQL"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
      <property name="eclipselink.ddl-generation.output-mode" value="both"/>
      <property name="eclipselink.application-location" value="C:\wompower2\DDL"/>
      <property name="eclipselink.create-ddl-jdbc-file-name" value="create.sql"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/demo"></property>
      <property name="javax.persistence.jdbc.user" value="user"></property>
      <property name="javax.persistence.jdbc.password" value="pwd"></property>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property>
    </properties>
  </persistence-unit>
</persistence>

谢谢,
阿林丹。

最佳答案

首先让我澄清一下,JPA 是 ORM 的标准规范,而 EclipseLink 是该规范的实现者之一(Hibernate 是另一个示例)。尽管 EclipseLink 提供了一种通过配置为您创建表的机制,但该规范并未强制要求创建模式或表。下面是控制这两个配置属性

<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />

去通过 this tutorial for more information (具体3.2节)

关于jpa - eclipselink 不会从带注释的 JPA 类生成表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612187/

相关文章:

transactions - 检索 JMS 消息重试次数

jakarta-ee - 无法使网格布局适应屏幕大小(Vaadin 6.7.4)

mysql - Spring Boot + JPA + mysql ...错误的做法?

java - jpa "dirty"交易

java - 删除多对多关系?

jakarta-ee - 使用 JAAS 删除前一个 session ,如果它已经处于事件状态(如果用户忘记注销)

java - Hibernate 谓词 - 无效路径

java - 如何隐藏 h :outputLink conditionally?

java - 找不到适用于 jdbc :mysql://localhost:3306/jpa 的合适驱动程序

java - Hibernate 不会在特定字段上级联更新