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.hbm.xml:
<class name = "Car">
        <!-- id是来配置主键
             name是类中的哪个属性和主键映射
             generator:表示主键的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <!-- property是用来把类中的属性和表的字段做一一对应 -->
        <property name="name" />

    </class>
User.hbm.xml:
<class name = "User">
        <!-- id是来配置主键
             name是类中的哪个属性和主键映射
             generator:表示主键的生成策略
        -->
        <id name = "id">
            <generator class="native" />
        </id>
        <!-- property是用来把类中的属性和表的字段做一一对应 -->
        <property name="name" />

        <set name="cars" cascade="all">
            <key column="uid" />
            <one-to-many class="Car"/>
        </set>
    </class>

annotation配置:

@Entity
public class Car implements Serializable{

    @Id @GeneratedValue
    public int getId() {
        return id;
    }

} 

@Entity
public class User implements Serializable {
        @Id @GeneratedValue
    public int getId() {
        return id;
    }

    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="uid")
    public Set<Car> getCars() {
        return cars;
    }
}
时间: 2024-10-24 21:55:10

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 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映射关系配置(五)

多表继承: 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 ex

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及以上的才行. 生成后的实