2017-04-24 36 views
0

我有這樣的情況, 會很好,如果有人可以幫助我的解決方案。NamedQuery的一個對象,並將其與整數ID

@MappedSuperclass 
public abstract class AbstractEntity implements Serializable, Cloneable { 
    private int id; 
} 


public class A extends AbstractEntity{ //Both A and B Entities will store in Table A in Database(in the same table) 
    //some code 
} 

public class B extends A{ 
    //some fields 
} 

public class C extends AbstractEntity{ //Data will be Store in Table C in database and there's a column name b_id as integer to hold the id of Entity b 
    B b; 
} 

現在我有這樣的查詢在我NamedQuery

query="SELECT e FROM C e WHERE e.b= :vid" 
//int vid; 

問題是,JPA拋出異常原因「B」是「B」和「VID」的類型變種是整數變種。

我不能說,

query="SELECT e FROM C e WHERE e.b.id= :vid" 

原因「b」爲擴展「A」和「A」是擴展AbstractEntity,這是我的想法,因爲我嘗試過了,得到了一些錯誤「參數值[601]不符合預期類型'// 601是數據庫中表'A'中實體的ID。

+0

私有成員'id'不會被繼承類'B' – alayor

+0

我改成了保護,但它給的我「爲實體沒有默認構造函數」的錯誤@alayor –

回答

0

在映射的超類中添加一個getter到id字段,以便您的類可以訪問此字段。讓你可以參考查詢中的字段。

@MappedSuperclass 
public abstract class AbstractEntity implements Serializable, Cloneable { 
    private int id; 

    public int getId() { return id; } 
} 
在`AbstractEntity`
+0

我還有在我的AbstractEntity類中的getter,也將它更改爲protected int id;仍然不起作用@ roque-santos –

相關問題