簡體   English   中英

SQLSyntaxErrorException:表/視圖不存在

[英]SQLSyntaxErrorException: Table/View does not exist

我得到了一個大的堆棧跟蹤,其根本原因是: java.sql.SQLSyntaxErrorException: Table/View 'U' does not exist. 對於要求該實體的所有內容,均引發一個異常: java.sql.SQLTransactionRollbackException: Constraint 'PSSVSERSRDTABASEID' is invalid: referenced table U does not exist.

我看了看這個問題,回答有關類似問題,但它似乎並沒有解決我的具體問題。 原因是當我在Eclipse中打開“ Database Development模式時,可以看到其他所有實體都映射到了表,但是看不到實體User('U')。

用戶實體:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "disc", discriminatorType = DiscriminatorType.STRING)
@Table(name = "U")
@NamedQuery(name = "FIND_WITH_USER_ID", query="SELECT DISTINCT u FROM User u WHERE u.userId = :userId")
public class User implements Serializable{
    private static final long serialVersionUID = 2468889149889625824L;
    @Id @GeneratedValue
    protected long databaseId;

    //getters/setters/etc

}

用戶確實有一個子類(在表模式中顯示):

@Entity
public class Customer extends User{
    private static final long serialVersionUID = -5239293307816318553L;

    public Customer(){
        super();
    } 

    //getters/setters/etc

}

在我的persistence.xml文件中,我確實指定要創建的表(如果它們尚不存在):

<properties>
        <property name="javax.persistence.jdbc.driver" value="C:\Program Files\GlassFish\glassfish-4.1\glassfish4\javadb\lib\derby.jar"></property>
        <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/AppDB;create=true"></property>
        <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>

如前所述,其他表在數據庫模式中顯示(並且對數據庫執行ping操作成功)。 問題似乎圍繞用戶實體形成。 我認為這可能與保留的關鍵字名稱沖突有關,因此我幾次更改了表的名稱(即使遇到更改,Eclipse / Glassfish似乎也有問題,即使我進行了更改,例如作為名稱,並重新啟動不會更新的應用;我認為這超出了問題的范圍)。

為什么不為實體用戶創建表? 我想念什么? 為什么仍然創建其他表?

問題出在您的SQL腳本上,您正在傳遞表別名而不是列名。 應該是你。

SELECT DISTINCT e.emp_id從Emp e

暫無
暫無

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

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