hibernate映射笔记

hibernate笔记

一、一对多注解

//一的一方
@Entity
@Table(name="user")
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer userid;
    @OneToMany(mappedBy="user")
    Set<Book> books;
    ...
    
}


//多的一方
@Entity
@Table(name="book")
public class Book {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer bookid;
    private String bookname;
    @ManyToOne
    @JoinColumn(name="userid")
    private User user;
    ...
    
    
}

二、多对多注解配置


@Entity
@Table(name="user")
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer userid;
    //cascade代表级联,设置了表示修改了某个持久化对象的值的时候会影响到关联对象,一般不设置
    //让hibernate来管理关联关系就好
    @ManyToMany
    @JoinTable(name="user_book",joinColumns={@JoinColumn(name="userid")},inverseJoinColumns={@JoinColumn(name="bookid")})
    Set<Book> books;
    ...
    
}


@Entity
@Table(name="book")
public class Book {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer bookid;
    private String bookname;
    
    @ManyToMany(cascade=CascadeType.ALL)
    @JoinTable(name="user_book",joinColumns={@JoinColumn(name="bookid")},inverseJoinColumns={@JoinColumn(name="userid")})
    private Set<User> users;
    
    ...
    
    
    
}

三、一对一注解配置


@Entity
@Table(name="user")
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer userid;
    //映射的是book属性这个类里面的user属性
    @OneToOne(mappedBy="user",cascade=CascadeType.ALL)
    private Book book;
    ...
    
    
}



@Entity
@Table(name="book")
public class Book {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer bookid;
    private String bookname;
    
    @OneToOne
    @JoinColumn(name="userid")
    private User user;
    
    
    ...
    
    
    
}

四、一对一共享主键


@Entity
@Table(name="user")
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer userid;
    private String name;
    
    @OneToOne(mappedBy="user")
    @PrimaryKeyJoinColumn
    private Book book;
    ...
    
    
}


@Entity
@Table(name="book")
public class Book {
    @Id
    @GenericGenerator(name="foreignKey",strategy="foreign",parameters=@Parameter(value="user",name="property"))
    @GeneratedValue(generator="foreignKey")
    private Integer bookid;
    private String bookname;
    
    @OneToOne(cascade=CascadeType.ALL,optional=false)
    @PrimaryKeyJoinColumn
    private User user;

    

    ...
    
    
}

猜你喜欢

转载自blog.csdn.net/momomoniqwer/article/details/78511102