Являются ли эти сообщения об ошибках JPA проблемой?

Я вижу этот вывод в приложении платформы Netbeans, где я использую JPA со встроенной базой данных дерби. Я хочу, чтобы моя БД была создана в корневом каталоге пользователя, если она еще не существует, поэтому пользователь не может выполнить дополнительную настройку. Кто-нибудь знает, будут ли проблемы с сообщениями об исключениях или предупреждениями ниже?

derby.system.home=/home/simgineer/.simdriver
derby.stream.error.file=/home/simgineer/.simdriver/log/derby.log
[EL Info]: 2012-09-12 11:46:42.397--ServerSession(177592104)--file:/home/simgineer/NetBeansProjects/SimDriver/build/cluster/modules/ext/MyDbLib.jar_VmCfgLibPU login successful
Database Class Loader started - derby.database.classpath=''
[EL Warning]: 2012-09-12 11:46:42.763--ServerSession(177592104)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Table/View 'VMCFG' already exists in Schema 'APP'.
Error Code: 30000
Call: CREATE TABLE APP.VMCFG (ID BIGINT NOT NULL, BOOT VARCHAR(30), CDROM VARCHAR(60), CPU VARCHAR(30), ENABLEKVM SMALLINT, HDA VARCHAR(80), MACADDR VARCHAR(30), SOUNDHW VARCHAR(30), VMNAME VARCHAR(30) NOT NULL, PRIMARY KEY (ID))
Query: DataModifyQuery(sql="CREATE TABLE APP.VMCFG (ID BIGINT NOT NULL, BOOT VARCHAR(30), CDROM VARCHAR(60), CPU VARCHAR(30), ENABLEKVM SMALLINT, HDA VARCHAR(80), MACADDR VARCHAR(30), SOUNDHW VARCHAR(30), VMNAME VARCHAR(30) NOT NULL, PRIMARY KEY (ID))")
[EL Warning]: 2012-09-12 11:46:42.876--ServerSession(177592104)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Table/View 'SEQUENCE' already exists in Schema 'APP'.
Error Code: 30000
Call: CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(15), PRIMARY KEY (SEQ_NAME))
Query: DataModifyQuery(sql="CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(15), PRIMARY KEY (SEQ_NAME))")

Вот мой файл persistence.xml

<persistence version="2.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_2_0.xsd">
  <persistence-unit name="VmCfgLibPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>mycompany.jpa.Vmcfg</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:myDB;create=true"/>
      <property name="javax.persistence.jdbc.password" value="app"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="javax.persistence.jdbc.user" value="app"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

person simgineer    schedule 12.09.2012    source источник


Ответы (1)


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

person sheidaei    schedule 12.09.2012
comment
Спасибо за ссылку. Я не хочу удалять таблицы, если они уже существуют, поскольку я использую это во встроенном режиме и не хочу, чтобы пользователь выполнял дополнительные действия для создания базы данных. Забавно, что на вопрос, который вы связали, есть исключенный ответ, но он не отвечает на вопрос, а говорит, что вместо этого вы можете создать сценарий DDL. Я просто хочу, чтобы система не пыталась создать таблицу, если она уже существует, как указано в спецификации, упомянутой Паскалем. - person simgineer; 13.09.2012