Hibernate中ID生成策略(三)

2015-01-27 22:37:31 · 作者: · 浏览: 72
enerator( name="Teacher_GEN", table="GENERATOR_TABLE", pkColumnName="pkkey", valueColumnName="pkvalue", pkColumnValue="Teacher", allocationSize=1 ) public class Teacher { private int id; private String name; private String title; private String address; private String wifeName; private Date birth; private ZhiCheng zhiCheng; @Id @GeneratedValue(strategy=GenerationType.TABLE,generator="Teacher_GEN") public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name="_name") public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getWifeName() { return wifeName; } public void setWifeName(String wifeName) { this.wifeName = wifeName; } @Temporal(TemporalType.DATE) public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } @Enumerated(EnumType.STRING) public ZhiCheng getZhiCheng() { return zhiCheng; } public void setZhiCheng(ZhiCheng zhiCheng) { this.zhiCheng = zhiCheng; } }

(2)测试

(3)验证

?

查看hibernate执行过程中产生的sql语句

Hibernate: select pkvalue from GENERATOR_TABLE where pkkey = 'Teacher' for update

Hibernate: insert into GENERATOR_TABLE(pkkey, pkvalue) values('Teacher', ?)

Hibernate: update GENERATOR_TABLE set pkvalue = ? where pkvalue = ? and pkkey = 'Teacher'

Hibernate: select pkvalue from GENERATOR_TABLE where pkkey = 'Teacher' for update

Hibernate: update GENERATOR_TABLE set pkvalue = ? where pkvalue = ? and pkkey = 'Teacher'

Hibernate: insert into Teacher (address, birth, _name, title, wifeName, zhiCheng, id) values (?, ?, ?, ?, ?, ?, ?)

?

?

查看数据表

select * from generator_table;

select * from teacher;

?