Hibernate的实体类注解详解(二)

2014-11-24 00:14:03 · 作者: · 浏览: 1
CascadeType) 可选 @OneToOne描述一个一对一的关联 fetch:表示抓取策略,默认为FetchType.LAZY cascade:表示级联操作策略 示例: @OneToOne(fetch=FetchType.LAZY) public Blog getBlog() { return blog; } 12、@ManyToMany 可选 @ManyToMany 描述一个多对多的关联.多对多关联上是两个一对多关联,但是在ManyToMany描述中,中间表是由ORM框架自动处理 targetEntity:表示多对多关联的另一个实体类的全名,例如:package.Book.class mappedBy:表示多对多关联的另一个实体类的对应集合属性名称 示例: User实体表示用户,Book实体表示书籍,为了描述用户收藏的书籍,可以在User和Book之间建立ManyToMany关联 @Entity public class User { private List books; @ManyToMany(targetEntity=package.Book.class) public List getBooks() { return books; } public void setBooks(List books) { this.books=books; } } @Entity public class Book { private List users; @ManyToMany(targetEntity=package.Users.class, mappedBy="books") public List getUsers() { return users; } public void setUsers(List users) { this.users=users; } } 两个实体间相互关联的属性必须标记为@ManyToMany,并相互指定targetEntity属性, 需要注意的是,有且只有一个实体的@ManyToMany注解需要指定mappedBy属性,指向targetEntity的集合属性名称 利用ORM工具自动生成的表除了User和Book表外,还自动生成了一个User_Book表,用于实现多对多关联 13、@MappedSuperclass 可选 @MappedSuperclass可以将超类的JPA注解传递给子类,使子类能够继承超类的JPA注解 示例: @MappedSuperclass public class Employee() { .... } @Entity public class Engineer extends Employee { ..... } @Entity public class Manager extends Employee { ..... } 14、@Embedded 可选 @Embedded将几个字段组合成一个类,并作为整个Entity的一个属性. 例如User包括id,name,city,street,zip属性. 我们希望city,street,zip属性映射为Address对象.这样,User对象将具有id,name和address这三个属性. Address对象必须定义为@Embededable 示例: @Embeddable public class Address {city,street,zip} @Entity public class User { @Embedded public Address getAddress() { .......... } } Hibernate验证注解 注解 适用类型 说明 示例 @Pattern String 通过正则表达式来验证字符串 @attern(regex=”[a-z]{6}”) @Length String 验证字符串的长度 @length(min=3,max=20) @Email String 验证一个Email地址是否有效 @email @Range Long 验证一个整型是否在有效的范围内 @Range(min=0,max=100) @Min Long 验证一个整型必须不小于指定值 @Min(value=10) @Max Long 验证一个整型必须不大于指定值 @Max(value=20) @Size 集合或数组 集合或数组的大小是否在指定范围内 @Size(min=1,max=255) 以上每个注解都可能性有一个message属性,用于在验证失败后向用户返回的消息,还可以三个属性上使用多个注解
来自网上收集