其实Hibernate的这种个映射看上去很烦,但你弄明白之后会发现挺好用的
实际项目中如果整合了Hibernate 那么基本大部分查询都会涉及到一对多,多对一,多对多这汇总关系。
如果不用Hibernate ,可以用ibatis,这个基本就是靠你自己写原生的sql来查询
你举的那个例子:
首先你要弄明白这两个表之间什么关系?一对多还是一对一?
我给你举个一对多例子吧,比如用户(user)和部门(team),一个部门可以有多个用户,但一个用户只能属于一个部门
先是team类,省略了其它属性,只写重点
@Entity
@Table(name?=?"tn_team")//和数据中表面一致
@Cache(usage?=?CacheConcurrencyStrategy.READ_WRITE)//这个是缓存的配置
public?class?Team?implements?Serializable?{//序列化
????private?List<User>?userList?=?Lists.newArrayList();//user数组
????@OneToMany(mappedBy?=?"team")//告诉hibernate这是一个一对多的关系,mappedby的意思自己百度,我就不写了
????@Fetch(FetchMode.SUBSELECT)//加载策略
????@OrderBy("name?ASC")//联合查询时的排序策略
????public?List<User>?getUserList()?{
????????return?userList;
????}
????public?void?setUserList(List<User>?userList)?{
????????this.userList?=?userList;
????}
}
然后是user类
@Entity
@Table(name?=?"tn_user")
@Cache(usage?=?CacheConcurrencyStrategy.READ_WRITE)
public?class?User?implements?Serializable?{
????private?Team?team;
????@ManyToOne(fetch?=?FetchType.LAZY)
????@JoinColumn(name?=?"team_id")//这个就是外键字段,就是你例子中的userid
????public?Team?getTeam()?{
????????return?team;
????}
????public?void?setTeam(Team?team)?{
????????this.team?=?team;
????}
}以上配置基于注解方式,多看看基础文章
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....