无法通过persistence.xml文件将数据插入数据库

时间:2016-10-23 20:56:05

标签: java postgresql jpa java-ee persistence.xml

我创建了一个PostgreSQL脚本只是为了在customer表中插入一行。插件在我的项目开始运行时发生。

但它不起作用,因为我收到以下错误:

[EL Warning]: 2016-10-23 22:14:40.182--ServerSession(609762439)--?>Exception [EclipseLink-4002] (Eclipse Persistence Services - >2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException    Internal Exception: org.postgresql.util.PSQLException: ERROR: syntax >error at end of input
     Position: 82    Error Code: 0    Call: INSERT INTO customer (id, Name, Adres, PostalCode, City, Tel, >Fax, Number) VALUES    Query: DataModifyQuery(sql="INSERT INTO customer (id, Name, Adres, >PostalCode, City, Tel, Fax, Number) VALUES")    [EL Warning]: 2016-10-23 22:14:40.183--ServerSession(609762439)-->Exception [EclipseLink-4002] (Eclipse Persistence Services - >2.5.2.v20140319-9ad6abd): >org.eclipse.persistence.exceptions.DatabaseException    Internal Exception: org.postgresql.util.PSQLException: ERROR: syntax >error at or near "1"
     Position: 2    Error Code: 0    Call: (1, 'Kantoor Snel Transport / Distributiecentrum', >'Zeugstraat', '2801JD', 'Gouda', 182512784, NULL, '92');    Query: DataModifyQuery(sql="(1, 'Kantoor Snel Transport / >Distributiecentrum', 'Zeugstraat', '2801JD', 'Gouda', 182512784, NULL, >'92');")    [EL Info]: connection: 2016-10-23 22:15:02.917-->ServerSession(609762439)-->file:/C:/Users/yomac_000/workspace/.metadata/.plugins/org.eclipse.wst.ser>ver.core/tmp0/wtpwebapps/snel-transport/WEB-INF/classes/_snel-transport >logout successful

这是persistence.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="snel-transport" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>nl.cimsolutions.snel_transport.models.Orders</class>
        <class>nl.cimsolutions.snel_transport.models.OrderLine</class>
        <class>nl.cimsolutions.snel_transport.models.OrderList</class>
        <class>nl.cimsolutions.snel_transport.models.Customer</class>
        <class>nl.cimsolutions.snel_transport.models.Product</class>
        <class>nl.cimsolutions.snel_transport.models.Category</class>
        <class>nl.cimsolutions.snel_transport.models.Status</class>
        <class>nl.cimsolutions.snel_transport.models.Truck</class>
        <!-- <jta-data-source>java:app/snel-transport</jta-data-source> -->
        <!-- <exclude-unlisted-classes>false</exclude-unlisted-classes> -->
        <properties>
            <property
                name="javax.persistence.schema-generation.database.action"
                value="drop-and-create" />
            <property name="eclipselink.canonicalmodel.subpackage"
                value="dev" />
            <property name="javax.persistence.sql-load-script-source"
                value="META-INF/sql/Customer2.sql" />
            <property name="javax.persistence.schema-generation-target"
                value="database" />
            <property name="javax.persistence.jdbc.driver"
                value="org.postgresql.Driver" />
            <property name="javax.persistence.jdbc.url"
                value="jdbc:postgresql://localhost:5432/snel-transport" />
            <property name="javax.persistence.jdbc.user" value="transport_user" />
            <property name="javax.persistence.jdbc.password"
                value="admin" />

            <property name="javax.persistence.jdbc.show_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

这是我的PostgreSQL脚本:

INSERT INTO customer (id, Name, Adres, PostalCode, City, Tel, Fax, Number) VALUES
    (1, 'Kantoor Snel Transport / Distributiecentrum', 'Zeugstraat', '2801JD', 'Gouda', 182512784, NULL, '92');

以下是客户模型的样子:

@Entity
public class Customer implements Serializable {

    private static final long serialVersionUID = 1L;
    @TableGenerator(
            name = "CustomerGenerator",
            allocationSize = 1,
            initialValue = 1)
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE,
            generator="CustomerGenerator")
    private Long id;
    private String name;
    private String adres;
    @Column(name="Number")
    private String streetNumber;
    @Column(name="PostalCode")
    private String postalCode;
    @Column(name="City")
    private String city;
    @Column(name="Tel")
    private String tel;
    @Column(name="Fax")
    private String fax;
    @OneToMany(mappedBy = "customer", targetEntity = Orders.class)
    private List<Orders> orders;

    public Customer() {
        // TODO Auto-generated constructor stub
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getStreetNumber() {
        return streetNumber;
    }

    public void setStreetNumber(String streetNumber) {
        this.streetNumber = streetNumber;
    }

    public String getPostalCode() {
        return postalCode;
    }

    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "model.OrderLine[ id=" + id + " ]";
    }

    public String getName() {
        return name;
    }

    public String getAdres() {
        return adres;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAdres(String adres) {
        this.adres = adres;
    }

}

我已经尝试在pgAdmin中使用PostgreSQL脚本。脚本有效,但不知何故它在JPA中不起作用。任何人都知道如何解决这个问题?

0 个答案:

没有答案