Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t通过persistence.xml文件将数据插入数据库_Java_Postgresql_Jpa_Jakarta Ee_Persistence.xml - Fatal编程技术网

Java Can';t通过persistence.xml文件将数据插入数据库

Java Can';t通过persistence.xml文件将数据插入数据库,java,postgresql,jpa,jakarta-ee,persistence.xml,Java,Postgresql,Jpa,Jakarta 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.persist

我创建了一个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>
以下是客户模型的外观:

@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;
    }

}
@实体
公共类Customer实现了可序列化{
私有静态最终长serialVersionUID=1L;
@表格生成器(
name=“CustomerGenerator”,
allocationSize=1,
初始值=1)
@身份证
@GeneratedValue(策略=GenerationType.TABLE,
generator=“CustomerGenerator”)
私人长id;
私有字符串名称;
私有字符串地址;
@列(name=“Number”)
私人字符串街号;
@列(name=“PostalCode”)
专用字符串后代码;
@列(name=“City”)
私人城市;
@列(name=“Tel”)
私人电话;
@列(name=“Fax”)
私人字符串传真;
@OneToMany(mappedBy=“customer”,targetEntity=Orders.class)
私人名单订单;
公众客户(){
//TODO自动生成的构造函数存根
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getStreetNumber(){
返回街道号码;
}
公共无效设置街号(字符串街号){
this.streetNumber=街道编号;
}
公共字符串getPostalCode(){
返回后代码;
}
公共无效setPostalCode(字符串postalCode){
this.postalCode=postalCode;
}
公共字符串getCity(){
回归城市;
}
公共城市(字符串城市){
this.city=城市;
}
公共字符串getTel(){
返回电话;
}
公共电话(字符串电话){
this.tel=tel;
}
公共字符串getFax(){
回传传真;
}
公用传真(字符串传真){
this.fax=传真;
}
@凌驾
公共int hashCode(){
int hash=0;
hash+=(id!=null?id.hashCode():0);
返回散列;
}
@凌驾
公共字符串toString(){
返回“model.OrderLine[id=“+id+”]”;
}
公共字符串getName(){
返回名称;
}
公共字符串getAdres(){
返回地址;
}
公共void集合名(字符串名){
this.name=名称;
}
公共无效设置地址(字符串地址){
this.adres=adres;
}
}

我已经尝试在pgAdmin中使用PostgreSQL脚本。脚本在那里工作,但不知怎么的,它在JPA中不起作用。。有人知道我如何解决这个问题吗?

尝试删除换行符,似乎它将其解释为两个独立的查询。@Tobb这确实有效,谢谢。但是我有一个包含40行的脚本。你知道我如何简单地删除这40行的所有换行符吗?还有,我如何简单地在这40行中添加换行符?我需要这个,因为将来我可以在脚本中添加一行。我很乐意以一种更具可读性的方式来做这件事。一些JPA提供商(例如DataNucleus)提供拆分行服务,而您的(EclipseLink)似乎没有。在你的JPA提供者上提出一个错误。在我看来,使用JPA填充你的数据库是不对的。相反,我会使用类似于
liquibase
flyway
的方法来实现这一点。尝试删除换行符,似乎它将其解释为两个独立的查询。@Tobb确实有效,谢谢。但是我有一个包含40行的脚本。你知道我如何简单地删除这40行的所有换行符吗?还有,我如何简单地在这40行中添加换行符?我需要这个,因为将来我可以在脚本中添加一行。我很乐意以一种更具可读性的方式来做这件事。一些JPA提供商(例如DataNucleus)提供拆分行服务,而您的(EclipseLink)似乎没有。在你的JPA提供者上提出一个错误。在我看来,使用JPA填充你的数据库是不对的。相反,我会使用类似于
liquibase
flyway
的方法来实现这一点。。
@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;
    }

}