2016-11-22 11 views
0

hiberntate table per subclass継承コンセプトを使用しています。それによって、子クラスを得ることが親IDですしながら、ここに私のサンプルコードhibernate継承で親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; 
} 

はここで、私は不明列のような例外を取得しています「where句」に「this_.id」。私のクエリは、識別子プロパティはidとして命名されたあなたの親クラスで

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

を明示的マッピングでカラム名を言及していません。これは、DB内の列名が各クラスのプロパティと同じでない場合に必要です。 – Ubercool

+1

ご回答いただきありがとうございます。しかし、列名はプロパティ名と同じです –

答えて

1

ですが、子クラスであなたがpayment_idPrimaryKeyJoinColumnをマッピングしています。あなたのコメントによると、私はプロパティと列の名前が同じであると信じています。

payment_idではなく、列名をidに変更しても問題ありません。

@PrimaryKeyJoinColumn(name = "id") 
+0

問題は修正されていますか? – Ubercool

関連する問題