- 注册时间
- 2011-3-22
- 最后登录
- 2013-6-27
- 在线时间
- 11644 小时
- 阅读权限
- 150
- 积分
- 62779
- 帖子
- 28923
- 精华
- 1
- UID
- 6
|
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表,用于实现多对多关联
MappedBy:写在关系的被维护端。如:@OneToOne(mappedBy=“idCord”)
idcord是指:对方类的哪一个属性是来 维护关系的。
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属性,用于在验证失败后向用户返回的消息,还可以三个属性上使用多个注解
下面:是本人续加的:
1,
2,枚举类型:
@Enumerated(EnumType.STRING)
[java] view plaincopyprint?
01.package cn.itm.bean;
02.
03.public enum Gender {
04. MAN,WOMEN
05.}
[java] view plaincopyprint?
01.private Gender gender;
02.
03. @Enumerated(EnumType.STRING)/*字符串。*/ @Column(length=5,nullable=false)
04. public Gender getGender() {
05. return gender;
06. },3
3,专门处理大文本和二进制数据的:
@Lob
--------------------------------------------------------------------------------------------------------------------------------------
4,延迟加载:@Basic存放大数据量,比如超过1M的话。
@Basic(fetch=FetchType.lazy)
|
|