我的表名是store_record。它有“代码”和“状态”是两个主键。在hibernate中,我为该表创建了持久化类。它创建了两个类,第一类有代码和状态setter和getter方法,另一类有第一类对象,剩下的表字段有setter和getter方法。现在我的问题是我想只使用一个主键(如代码)从该表中获取数据如何在hibernate中为此问题编写查询。
我的桌子就像这样
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 :(得分:0)
它不是2主键,实际上是复合键。并且,两个值组合在一起时会为您提供主键。
您应该只为实体映射一个类,并为复合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'