hibernate学习笔记16

@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;
    }

    
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值