簡體   English   中英

在向成員添加類后,JPA崩潰,並顯示SQLSyntaxErrorException。 如何刪除舊類的痕跡?

[英]After adding a member a class, JPA crashes with a SQLSyntaxErrorException. How do I delete traces of the old class?

我在Netbeans中創建了這個項目,這是我知道訪問其中任何項目的唯一方法。 我似乎找不到存儲對象的數據庫,因此可以刪除它們。 實際上,最好是每次我重新啟動glassfish時都刪除所有內容。 我知道更改類會導致這種問題,但是我不知道如何刪除有關舊版本的信息。 到目前為止,我一直在嘗試通過每次更改類名稱來重構類名稱來解決該問題,但我的創意名稱用完了。

例外:

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>

您的SQL安裝程序應該隨附一個WorkBench程序,您可以使用該程序來訪問數據庫,並在需要時從數據庫中刪除表和/或行。

嘗試使用值“ drop-and-create-tables”來刪除DDL並在部署時創建表。 Glashfish如以下http://docs.oracle.com/cd/E18930_01/html/821-2424/gksmw.html所述,在嵌入式derby數據庫上設置了默認的__datasource。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM