HSQLDB表没有生成

时间:2017-11-05 22:02:42

标签: eclipse jpa javabeans hsqldb persistence.xml

我有一个使用HSQLDB的数据库,我的persistence.xml文件没有像我期望的那样创建表。这是我的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="DanPfeiffer-SE452-ProjectPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>java.user.jpa.User</class>
    <class>java.score.jpa.Score</class>
    <class>java.teeBox.jpa.TeeBox</class>
    <class>java.course.jpa.Course</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>


    <properties>
      <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:hsql://localhost/mydb"/>
      <property name="javax.persistence.jdbc.user" value="SA"/>
      <property name="javax.persistence.jdbc.password" value=""/>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create-tables"/>
      <property name="eclipselink.deploy-on-startup" value="true" />    
    </properties>
  </persistence-unit>

</persistence>

我有一些用@Entity注释编写的Java Bean。这是最简单的豆类。

package main.java.user.jpa;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import main.java.score.IScore;
import main.java.score.jpa.Score;
import main.java.user.IUser;

@Entity
@NamedQuery(name = "findAllUsers", query = "select u from User u")
public class User implements Serializable, IUser    {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int userId;

    @NotNull
    private String firstName;

    @NotNull
    private String lastName;

    @NotNull
    private double handicap;

    @OneToMany
    private Collection<Score> scores;

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getFirstName() {
        return this.firstName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getLastName() {
        return this.lastName;
    }

    public void setId(int id) {
        this.userId = id;
    }
    public int getId() {
        return userId;
    }
    public void setHandicap(double hcp) {
        this.handicap = hcp;
    }
    public double getHandicap() {
        return handicap;
    }
    @Override
    public void setScores(Collection<Score> scores) {
        if (this.scores != null){
            for (Score temp : scores){
                this.scores.add(temp);
            }
        }
        else{
            this.scores = scores;
        }
    }
    @Override
    public Collection<Score> getScores() {
        // TODO Auto-generated method stub
        return null;
    }

    public boolean equals(Object object){
        boolean result = false;
        if (object instanceof User){
            User temp = (User)object;
            if (temp.getFirstName().equals(this.firstName)
                    && temp.getLastName().equals(this.lastName)
                    && temp.getHandicap() == this.handicap){
                result = true;
            }
        }
        return result;
    }

    public String toString(){
        String result = ("User: \nID: " + this.userId + "\nName:" + this.firstName + " " + this.lastName + " \nHandicap:" + this.handicap);
        return result;
    }

}

根据我的理解,每次运行hsqldb.jar文件时,persistence.xml文件都应该删除并创建所有表。

Folder Structure in Eclipse:

我没有发现我的连接问题(它在我连接时起作用,只是没有数据),我的持久性文件或位置。我最初用这种方式填充数据库。

0 个答案:

没有答案