0

私はこのプロジェクトを Netbeans で作成しましたが、それが私が知っている唯一のアクセス方法です。オブジェクトを削除できるように、オブジェクトが保存されているデータベースが見つからないようです。実際、グラスフィッシュを再起動するたびにすべてを単純に削除するのが最善です。クラスを変更するとこの種の問題が発生することは理解していますが、古いバージョンのクラスに関する情報を削除する方法がわかりません。これまで、クラス名が変更されるたびにリファクタリングして問題を回避しようとしましたが、クリエイティブな名前が不足しています。

例外:

javax.servlet.ServletException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Column 'CURRENTDAY' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'CURRENTDAY' is not a column in the target table.
Error Code: -1
Call: SELECT ID, CURRENTDAY, INTERNAL_TIME_M, LASTTIME_M FROM FASTINTERNALCLOCK WHERE (ID = ?)
    bind => [1 parameter bound]
Query: ReadObjectQuery(name="readObject" referenceClass=FastInternalClock sql="SELECT ID, CURRENTDAY, INTERNAL_TIME_M, LASTTIME_M FROM FASTINTERNALCLOCK WHERE (ID = ?)")

私がこれで作ったのは、クラス FASTINTERNALCLOCK の新しい CURRENTDAY メンバーが探しているテーブルにないということです。おそらく、メンバーがまだ存在していなかった古いバージョンのクラスに基づいたテーブルを探しているためです。新しいメンバーを念頭に置いて再作成できるように、このテーブルを削除するにはどうすればよいですか?

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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="webThermosPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/__default</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>
4

2 に答える 2

0

SQL インストールには、データベースにアクセスし、必要に応じてデータベースからテーブルや行を削除するために使用できる WorkBench プログラムが付属しているはずです。

于 2013-03-10T21:46:28.013 に答える
0

DDL の値「drop-and-create-tables」を使用してドロップし、展開時にテーブルを作成してみてください。ここで説明されているように、Glashfish は組み込みの derby データベースにデフォルトの __datasource を設定しますhttp://docs.oracle.com/cd/E18930_01/html/821-2424/gksmw.html

于 2013-03-11T11:41:06.630 に答える