java - 当我运行程序时,JPA 不会在 MySQL 中创建表

标签 java mysql jpa orm eclipselink

这是我名为 Class 的实体:

package az.bank.entities;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table (name = "cards")
public class Card implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String cardHolder;
    private String cardNumber;
    private String cardPassword;
    private String expiryYear;
    private String expiryMonth;
    private String cardType;
    private double cardBalance;   
}

这是我的 persistance.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="BankServicePU" transaction-type="JTA">
        <jta-data-source>jdbc/BankService</jta-data-source>
        <class>az.bank.entities.Card</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/cards" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="root" />
            <property name="javax.persistence.schema-generation.database.action" value="create"/>
        </properties>
    </persistence-unit>
</persistence>

我已经创建了名为 jdbc/BankService 的连接池和名为 cards 的 mySQL 方案。但是当我部署和运行程序时,它不会在该方案中创建表。请帮助我在这里做错了什么。

最佳答案

如果您的数据库已经包含卡片表,那么先删除它。使用

 <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>

关于java - 当我运行程序时,JPA 不会在 MySQL 中创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46618802/

相关文章:

jpa - 即使 EntityManager 已被清除()、关闭()并设置为 null,JAXB 也会急切地获取标记为 FetchType.LAZY 的字段

java - Spring Data PostgreSQL Key already exists 错误2

java - Tapestry5 : loop, 访问表达式中的值

java - 使用 Spring 框架在 JSP 页面中显示可变长度的字符串列表

java - Morphia 中 createQuery 和 find 之间的区别?

mysql - SQL - 当WHERE条件来自列表时循环查询

mysql - Docker中MySQL密码的最佳实践

java - JPA 在 Spring 中到底是如何工作的?一些疑问

java - 未返回 dateTimeFormatter 短时区名称

PHP SQL 计算 3 列总计并按另一列分组