设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 1345|回复: 2
打印 上一主题 下一主题

JPA 的注解续 [复制链接]

Rank: 8Rank: 8

跳转到指定楼层
1#
那个谁 发表于 2012-7-4 16:13:39 |只看该作者 |倒序浏览
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)



分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

2#
混混@普宁.中国 实名认证  发表于 2012-7-4 21:44:34 |只看该作者
杰管,你又做 java 去了?

使用道具 举报

Rank: 8Rank: 8

3#
那个谁 发表于 2012-8-17 14:34:02 |只看该作者
混混@普宁.中国 发表于 2012-7-4 21:44
杰管,你又做 java 去了?

从未离开过

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-5-17 16:42 , Processed in 1.141827 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部