2010-09-01 43 views
-2

我的应用程序抛出此异常。 我使用的Java DB作为后端,我使用JPAjava.sql.SQLException:Schema'ADMIN'中已存在表/视图'SEQUENCE'

内部异常: 值java.sql.SQLException:表/视图 “零花钱”已经存在于架构 “应用”。错误代码:30000电话:CREATE TABLE APP.POCKETMONEY(ID INTEGER NOT NULL,DateofSpending日期,说明 VARCHAR(255),AMOUNT INTEGER,PRIMARY KEY (ID))查询:DataModifyQuery()

内部异常: java.sql.SQLException:表/视图 'SEQUENCE'已经存在于Schema 'ADMIN'中。错误代码:30000电话: CREATE TABLE SEQUENCE(SEQ_NAME VARCHAR(50)NOT NULL,SEQ_COUNT 十进制,PRIMARY KEY(SEQ_NAME)) 查询:DataModifyQuery()

这里是我的JPA代码

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package mymoney; 

import java.io.Serializable; 
import java.util.Date; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 

/** 
* 
* @author sugan 
*/ 
@Entity 
@Table(schema = "APP") 
public class pocketMoney implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy=GenerationType.TABLE) 
    private int id; 
    @Temporal(TemporalType.DATE) 
    @Column(name = "DateofSpending") 
    private Date dos; 
    private String description; 
    private int amount; 

    public int getAmount() { 
     return amount; 
    } 

    public void setAmount(int amount) { 
     this.amount = amount; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public Date getDos() { 
     return dos; 
    } 

    public void setDos(Date dos) { 
     this.dos = dos; 
    } 

    public int getId() { 
     return id; 
    } 

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

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (int) id; 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof pocketMoney)) { 
      return false; 
     } 
     pocketMoney other = (pocketMoney) object; 
     if (this.id != other.id) { 
      return false; 
     } 
     return true; 
    } 

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

的persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.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_1_0.xsd"> 
    <persistence-unit name="myMoneyPU" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>mymoney.pocketMoney</class> 
    <properties> 
     <property name="eclipselink.jdbc.password" value="adminadmin"/> 
     <property name="eclipselink.jdbc.user" value="admin"/> 
     <property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/> 
     <property name="eclipselink.jdbc.url" value="jdbc:derby:pocketmoney;create=true"/> 
     <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 
    </properties> 
    </persistence-unit> 
</persistence> 
+2

在没有看到代码,这会导致错误(如果你在消息IIRC仔细一看,他们会被记录为警告),我只能翻译错误信息。看起来你的代码正在试图创建已经存在于你的数据库中的表...... – 2010-09-01 08:38:18

回答

2

无论JPA你使用供应商,我怀疑它被配置到g嵌套并导出与映射对应的数据库对象......以及那些已存在的数据库对象。

根据您的配置,在JPA提供程序上,确切消息(EclipseLink会记录警告AFAIK等消息),这可能只是正常或“配置错误”。

如果您想了解更多详情,请告诉我们您正在使用的服务提供商,并出示您的persistence.xml

更新:由于怀疑,你正在使用的EclipseLink而这些消息是“正常”的