2016-11-22 44 views
0

我使用hiberntate表按子類繼承概念。在「where子句」這裏是我的示例代碼如何在休眠繼承中使用父ID獲取數據

@Entity 
@Table 
@Inheritance(strategy = InheritanceType.JOINED) 
public class Payment{ 
    @Id 
    @Column 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    @Column 
    private double amount; 
} 

@Entity 
@Table 
@PrimaryKeyJoinColumn(name = "payment_id") 
public class CreditCard extends Payment{ 
    @Column 
    private String CreditCardType; 
} 

這裏,同時通過它讓兒童類的父ID,我得到像未知列例外「this_.id」。我的查詢是

List<CreditCard> creditCardList = 
    getSessionFactory().getCurrentSession().createCriteria(CreditCard.class, 
    "card").add(Restrictions.eq("card.id", id)).list(); 
+0

您沒有明確提及列名的映射。如果DB中的列名與各個類中的屬性不同,則這是必需的。 – Ubercool

+1

感謝您的回覆。但列名稱與屬性名稱相同 –

回答

1

在你的父類的標識屬性被命名爲id但在子類中要映射的PrimaryKeyJoinColumnpayment_id。根據你的評論,我相信你有相同的名稱爲屬性和列。

更改列名稱爲id而不是payment_id如下,它應該工作。

@PrimaryKeyJoinColumn(name = "id") 
+0

問題是否解決? – Ubercool