2014-02-18 50 views
0

我的表名是store_record。它有「代碼」和「狀態」是兩個主鍵。在休眠期間,我爲該表創建了持久性類。它創建了兩個類,第一類具有代碼和狀態設置器,getter方法和其他類第一類對象,其餘的表字段獲取setter和getter方法。現在我的問題是我想只使用一個主鍵(如代碼)從該表中獲取數據我怎麼能在這個問題的休眠寫查詢。休眠 - 如何從兩個主鍵表中檢索數據

我的表是這樣

 
      desc branches; 
+----------------------+-------------+------+-----+---------+-------+ 
| Field    | Type  | Null | Key | Default | Extra | 
+----------------------+-------------+------+-----+---------+-------+ 
| cod_ifsc_bank_branch | varchar(24) | NO | PRI | NULL |  | 
| txt_bank_branch_name | varchar(24) | YES |  | NULL |  | 
| cod_rec_status  | char(1)  | NO | PRI | A  |  | 
| txt_last_maker_id | varchar(16) | YES |  | NULL |  | 
| dat_last_maker  | date  | YES |  | NULL |  | 
|  | 
+----------------------+-------------+------+-----+---------+-------+ 
在此表中

具有兩個主鍵之一是「cod_ifsc_bank_branch」和另一種是「cod_rec_status」。但我想用一個主鍵得到的數據是像「cod_ifsc_bank_branch」現在,我怎麼寫Hibernate查詢這個問題

提前感謝 DNMurthy

+0

我假設第一類是第二類的父類,但請添加您的代碼類。 – Koitoer

+0

http://stackoverflow.com/questions/2847728/hibernate-query-by-primary-key – eduardohl

+0

@eduardohl:它不是重複的,OP要查詢只有一部分凱(引文:「只使用一個主鍵(如代碼)「)。 –

回答

0

不爲2的主鍵,它實際上是一個複合鍵。而且,兩者結合在一起時的價值就是給你主鍵。

您應該只有1個類映射爲實體,而另一個類是複合ID(如果您使用Hibernate特有的功能,可以忽略它)。

作爲主鍵一部分的屬性與其他常規屬性沒有區別,您可以將它用作查詢條件,就像其他常規屬性一樣。例如:

(不很精確測繪,只是給你一個想法)

@Entity 
class Foo { 
    @EmbededId 
    private FooId id; 

    @Column(updatable=false, insertable=false) 
    private String code; // part of the ID, but you may also map it again with 
          // updatable, insertable = false 

    @Column(updatable=false, insertable=false) 
    private FooStatus status; // Ditto 
} 

@Embeddable 
class FooId { 
    @Column 
    String code; 

    @Column 
    FooStatus status; 
} 

那麼罰款讓你有這樣的查詢:

from Foo where foo.code = 'SOME_CODE' 

甚至(避風港沒有測試,我認爲它可能工作)

from Foo where foo.id.code = 'SOME_CODE' 
+0

謝謝............ :) – Moorthy