您的位置:首页 > 其它

hibernate学习笔记16

2013-02-05 10:37 288 查看
@Entity
@Table(name = "customer")
@TableGenerator(name = "customer_gen",
table="tb_generator",
pkColumnName="gen_name",
valueColumnName="gen_value",
pkColumnValue="CUSTOMER_PK",
allocationSize=1
)
public class CustomerEO implements java.io.Serializable {
……
}
或者将其标注在ContactEO中,也是可以的。但建议标注在所作用的实体中,这样有助于方便查看。
l name属性表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的“generator”值中。
l table属性表示表生成策略所持久化的表名,例如,这里表使用的是数据库中的“tb_generator”。
l catalog属性和schema具体指定表所在的目录名或是数据库名。
l pkColumnName属性的值表示在持久化表中,该主键生成策略所对应键值的名称。例如在“tb_generator”中将“gen_name”作为主键的键值
l valueColumnName属性的值表示在持久化表中,该主键当前所生成的值,它的值将会随着每次创建累加。例如,在“tb_generator”中将“gen_value”作为主键的值
l pkColumnValue属性的值表示在持久化表中,该生成策略所对应的主键。例如在“tb_generator”表中,将“gen_name”的值为“CUSTOMER_PK”。
l initialValue表示主键初识值,默认为0。
l allocationSize表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50。
l UniqueConstraint与@Table标记中的用法类似,请读者参阅5.2.1小节。
用一个简单示意图表示持久化主键表和表生成策略,如图所示。



@Entity

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)

@TableGenerator(

name="t_gen",

table="t_gen_table",

pkColumnName="t_pk",

valueColumnName="t_value",

pkColumnValue="person_pk",

initialValue=1,

allocationSize=1

)

public class Person {

private int id;

private String name;

@Id

@GeneratedValue(generator="t_gen", strategy=GenerationType.TABLE)

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}





@Entity

public class Student extends Person {

private int score;

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

}



@Entity

public class Teacher extends Person {

private String title;

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: