java.sql.SQLException: таблица / представление 'SEQUENCE' уже существует в схеме 'ADMIN'
Мое приложение выдает это исключение. Я использую Java DB в качестве серверной части, и я использую JPA
Внутреннее исключение: java.sql.SQLException: таблица / представление 'POCKETMONEY' уже существует в схеме 'APP'. Код ошибки: 30000 Вызов: CREATE TABLE APP.POCKETMONEY (ID INTEGER NOT NULL, DateFSpending DATE, ОПИСАНИЕ VARCHAR(255), AMOUNT INTEGER, PRIMARY KEY (ID)) Запрос: DataModifyQuery()
Внутреннее исключение: java.sql.SQLException: таблица / представление "SEQUENCE" уже существует в схеме "ADMIN". Код ошибки: 30000 Вызов: CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL, 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>
1 ответ
Независимо от того, какой провайдер JPA вы используете, я подозреваю, что он настроен на создание и экспорт объектов базы данных, соответствующих вашим сопоставлениям... и они уже существуют.
В зависимости от вашей конфигурации, на провайдере JPA, на конкретном сообщении (EclipseLink регистрирует такие сообщения, как предупреждение AFAIK), это может быть просто нормальным явлением или "ошибкой конфигурации".
Если вы хотите получить более подробную информацию, сообщите нам, какого провайдера вы используете, и покажите persistence.xml
,
Обновление: как вы подозреваете, вы используете EclipseLink, и эти сообщения являются "нормальными" (они регистрируются как предупреждение, если вы внимательно посмотрите на сообщение IIRC)