多对一是在多的类上存在一的对象

一对多是在一的类上存在多的集合.

多的类

user.java:

 package com.bjsxt.hibernate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table; @Entity
@Table(name="t_user")
public class User {
private int id;
private String name; @Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

一的类Group.java, 需要多的集合:

package com.bjsxt.hibernate;

import java.util.HashSet;
import java.util.Set; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table; @Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
private Set<User> users = new HashSet<User>();
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany
@JoinColumn(name="groupId")
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}

test文件:

package com.bjsxt.hibernate;

import java.util.Date;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; public class HibernateORMappingTest {
private static SessionFactory sessionFactory; //@BeforeClass
public static void beforeClass() {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
//@AfterClass
public static void afterClass() {
sessionFactory.close();
} @Test
public void testSchemaExport() {
new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
} public static void main(String[] args) {
beforeClass();
}
}

  

 

运行test的结果:

14:15:34,169 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:303 -
create table t_group (
id integer not null auto_increment,
name varchar(255),
primary key (id)
)
14:15:34,304 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:303 -
create table t_user (
id integer not null auto_increment,
name varchar(255),
groupId integer,
primary key (id)
)
14:15:34,409 DEBUG org.hibernate.tool.hbm2ddl.SchemaExport:303 -
alter table t_user
add index FKCB63CCB6C3D18669 (groupId),
add constraint FKCB63CCB6C3D18669
foreign key (groupId)
references t_group (id)
14:15:34,674 INFO org.hibernate.tool.hbm2ddl.SchemaExport:196 - schema export complete

  

XML方式:

作为多的一方user正常写成:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="com.bjsxt.hibernate.User" table="t_user">
<id name="id">
<generator class="native"></generator>
</id> <property name="name"></property> </class> </hibernate-mapping>

一的一方 group需要写set:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="com.bjsxt.hibernate.Group" table="t_group">
<id name="id">
<generator class="native"></generator>
</id> <property name="name"></property>
<set name="users">
<key column="groupId"></key>
<one-to-many class="com.bjsxt.hibernate.User"/>
</set>
</class> </hibernate-mapping>

  

 

最新文章

  1. Android 从零开始打造异步处理框架
  2. 利用gcc自带的功能-fstack-protector检测栈溢出及其实现
  3. selenium使用笔记(二)——Tesseract OCR
  4. 自定义Toast和RatingBar的简单用例
  5. php学习
  6. 开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供) 【转】
  7. MYSQL数据回流
  8. 修改ssh服务端口
  9. iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent
  10. 武汉Uber优步司机奖励政策(2月1日~2月7日)
  11. validationEngine[转]
  12. unix 环境高级编程 读书笔记与习题解答第四篇
  13. Keil C51 与 ARM 并存方法
  14. 同事的Excel中的图片突然不能选择
  15. WordUtil java导出word工具类
  16. RabbitMQ消息队列(四)-服务详细配置与日常监控管理
  17. python基础知识12---函数2
  18. vue项目中主要文件的加载顺序(index.html、App.vue、main.js)
  19. pta6-17(另类堆栈)
  20. Eclipse.Error.gen already exists but is not a source folder.

热门文章

  1. Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
  2. Android Service学习之IntentService 深入分析
  3. iOS中的多线程基础
  4. 用GeneratedKeyHolder获得新建数据主键值
  5. 4位开锁&lt;dfs&gt;
  6. java 线程的中断
  7. IDL 实现求算 DEM 坡度坡向
  8. redis 工具类 单个redis、JedisPool 及多个redis、shardedJedisPool与spring的集成配置
  9. hdu4861(游戏)
  10. ref和out,以及一般方法的引用参数和值参数寻解