Hibernate对jpa annotation的支持
@Table(name="t_user1")
public class User1 {} //如果是group则必须得重命名表,因为group是关键字
@Id
//采用数据库自增方式生成主键
//@GeneratedValue(strategy=GenerationType.AUTO)
@GeneratedValue
public int getId() {
return id;
}
@Column(name="create_time")
public Date getCreateTime() {
return createTime;
}
//年龄不持久化,则数据库里没有
@Transient
public int getAge() {
return age;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)//主键由数据库自动生成(主要是自动增长型)
public int getId() {
return id;
}
@Id
@GeneratedValue(strategy=GenerationType.TABLE) //使用一个特定的数据库表格来保存主键。
public int getId() {
return id;
}
//采用hibernate uuid生成器,此时id类型必须改成String类型,不能是int类型,而上面所有的是利用数据库自动分配,则id是int类型
@Id
@GenericGenerator(name="myIdGenerator",strategy="uuid")
@GeneratedValue(generator="myIdGenerator")
public String getId() {
return id;
}
@ManyToOne //此时manytoone是自动生成外键class_id,但使用joincolumn()就可以改变外键名称
@JoinColumn(name="classesid")
public Classes getClasses() {
return classes;
}
//mappedBy在哪一端,哪一端就不维护关系,它成为了关系的被管理端
//向当于hibernate中的inverse=true
//如果采用了泛型,可以不用采用targetEntity属性
@OneToMany(mappedBy="classes",targetEntity=Student.class)
@JoinColumn(name="classesid")
public Set getStudents() {
return students;
}
//因为集合使用泛型所以不再使用targetEntity来指定类型
@ManyToMany //要使用第三方表
@JoinTable(
name="t_user_role",
joinColumns={@JoinColumn(name="user_id")},
inverseJoinColumns={@JoinColumn(name="role_id")} //对端的外键
)
public Set<Role> getRoles() {
return roles;
}
@ManyToMany(mappedBy="roles") //让对端维护,让user端维护
public Set<User> getUsers() {
return users;
}
采用JPA映射每棵类继承树一张表
@Entity
@Table(name="t_animal")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)
public class Animal {}
@Entity
@DiscriminatorValue(value="B")
public class Bird extends Animal {
@Entity
@DiscriminatorValue(value="P")
public class Pig extends Animal {
采用JPA映射每个类一张表
@Entity
@Table(name="t_animal")
@Inheritance(strategy=InheritanceType.JOINED)
public class Animal {
@Entity
public class Pig extends Animal {
@Entity
public class Bird extends Animal {
采用JPA映射每个具体类一张表
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Animal {
private int id;
private String name;
private boolean sex;
@Id
public int getId() {
return id;
}
@Entity
public class Bird extends Animal {
@Entity
public class Pig extends Animal {