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