Hibernate映射关系配置(五)

多表继承:

Bean:

public class Person implements Serializable{

    private int id ;

    private String name ;

    private int age ;
}
public class Student extends Person implements Serializable {

    private String dream ;

    private Date birthday ;
}
public class Teacher extends Person implements Serializable{

    private String job ;

    private boolean merry ;
}

xml(在同一个表中,加一个字段来区分类型):

Person.hbm.xml:
<class name = "Person" discriminator-value="p">
        <id name = "id">
            <generator class="native" />
        </id>
        <!-- discriminator 是新建一个列,此列用来区分对象具体的类型
             discriminator-value 定义插入一个具体的对象的时候,自动向type列中插入指定的值
        -->
        <discriminator column="type" />
        <property name="name" />
        <property name="age" />

        <subclass name = "Teacher" discriminator-value="t">
             <property name="job" />
             <property name="merry" />
        </subclass>

        <subclass name = "Student" discriminator-value="s">
             <property name="dream" />
             <property name="birthday" />
        </subclass>
    </class>
    

xml(在不同表中):

Person.hbm.xml:
<class name = "Person">
        <id name = "id">
            <generator class="native" />
        </id>

        <property name="name" />
        <property name="age" />

        <joined-subclass name="Teacher" table="Teacher">
            <key column="pid" />
            <property name="job" />
            <property name="merry" />
        </joined-subclass>

        <joined-subclass name="Student" table="Student">
            <key column="pid" />
            <property name="dream" />
            <property name="birthday" />
        </joined-subclass>

    </class>
时间: 2024-10-25 22:00:46

Hibernate映射关系配置(五)的相关文章

Hibernate映射关系配置

一:多对一(双向关联) Bean: public class Car implements Serializable{ private int id ; private String name ; private User user ; .... } public class User implements Serializable { private int id ; private String name ; private Set<Car> cars ; .... } xml配置: Ca

Hibernate映射关系配置(三)

一对一单向(外键映射): Bean: public class Card implements Serializable{ private int id ; private int num ; private Person person ; .... } public class Person implements Serializable { private int id ; private String name ; .... } Xml: Card.hbm.xml: <class name

Hibernate映射关系配置(二)

二.一对多(单向) Bean: public class Car implements Serializable{ private int id ; private String name ; private User user ; .... } public class User implements Serializable { private int id ; private String name ; private Set<Car> cars ; .... } xml配置: Car.

Hibernate映射关系配置(四)

多对多单向: Bean: public class Student implements Serializable { private int id ; private String name ; private Set<Teacher> teachers ; .... } public class Teacher implements Serializable{ private int id ; private String name ; .... } xml: Student.hbm.xm

Hibernate映射关系配置(六)

单向List/Array映射: Bean: public class Car implements Serializable{ private int id ; private String name ; .... } public class User implements Serializable { private int id ; private String name ; private List<Car> cars ; .... } xml: Car.hbm.xml: <cl

Hibernate映射关系之多对多

1.用户表user和优惠券coupon存在多对多的关系,一个用户可以拥有多个优惠券,一个优惠券可以从属于多个用户. 2.user.java,创建了中间表tb_user_coupon (1)JoinTable表示中间表的 (2) /** * 一个用户可以拥有多个优惠券 但优惠券只有自己的属性,没有用户的引用 单边的一对多关系 */ @ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST }) @JoinTable(n

Hibernate映射关系

1.主键相同的一对一关系(商店与商家账户的管理) 两个实体类使用相同的主键,反过来,具有相同主键的尸体被视为一对一的关系.这样就省掉外键关联. 商店类: @Entity @Table(name="tb_store") public class Store { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; /** * 区信息之外的详细商店地址 */ @Column(nullable=false)

Hibernate映射关系之一对多

1.双边使用的比较多,所以这里用双边的一对多:一个商店包含多个优惠券,一个优惠券对应一个商店 Store.java(商店) @OneToMany(mappedBy="store",cascade = {CascadeType.REMOVE }) private Set<Coupon> coupons=new HashSet<Coupon>(); (1)mappedBy="store"是在Coupon类中的Store的变量名称 (2)Casca

《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系

之前我们都是使用配置文件的方式来生成的代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件.还是有点麻烦. 所以,这一篇,我们来说说使用注解的方式来在接在实体类上配置映射关系. 第一步:新建一个项目,或者把之前项目中的实体类.映射文件,还有hibernate中的mapping标签都删除,然后在DBBrowser中再次生成实体类.如下图: 红框中的选项就表示直接在POJO上以注解的方式加上映射关系.注意括号内的hibernate版本,必须是3.2及以上的才行. 生成后的实