java.sql.SQLException: таблица / представление 'SEQUENCE' уже существует в схеме 'ADMIN' - PullRequest
0 голосов
/ 01 сентября 2010

Мое приложение выдает это исключение.Я использую Java DB в качестве серверной части и использую JPA

Внутреннее исключение: java.sql.SQLException: таблица / представление 'POCKETMONEY' уже существует в схеме 'APP'.Код ошибки: 30000 Вызов: CREATE TABLE APP.POCKETMONEY (идентификатор INTEGER NOT NULL, дата даты отправки, описание VARCHAR (255), AMOUNT INTEGER, первичный ключ (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 Ответ

2 голосов
/ 01 сентября 2010

Независимо от того, какого провайдера JPA вы используете, я подозреваю, что он настроен на создание и экспорт объектов базы данных, соответствующих вашим сопоставлениям ... и те, которые уже существуют.

В зависимости от вашей конфигурации, на провайдере JPA, на точном сообщении (EclipseLink регистрирует такие сообщения, как предупреждение AFAIK), это может быть просто нормальным явлением или «ошибкой конфигурации».

Если вы хотите получить более подробную информацию, сообщите нам, каким провайдером вы пользуетесь, и покажите свой persistence.xml.

Обновление: Как подозревается, вы используете EclipseLink, и эти сообщения являются "нормальными" (они регистрируются как предупреждение, если вы внимательно посмотрите на сообщение IIRC)

...