Hibernate多对多映射为第三张表manytomany【xml和注解】实例(十七)
来源:互联网 发布:阿里云阿里巴巴矢量图 编辑:程序博客网 时间:2024/06/05 04:22
1 这个方法比较不错 【原先的多对多失败了就是因为没有进行第三张表映射造成的】
package com.sm.hibernate.pojo;import java.util.Set;public class IUser {private int id;private String name;private ICard iCard;private I2Card i2Card;private Set<ICourse> courses;public Set<ICourse> getCourses() {return courses;}public void setCourses(Set<ICourse> courses) {this.courses = courses;}public I2Card getI2Card() {return i2Card;}public void setI2Card(I2Card i2Card) {this.i2Card = i2Card;}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;}public ICard getiCard() {return iCard;}public void setiCard(ICard iCard) {this.iCard = iCard;}}
<?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 package="com.sm.hibernate.pojo"><class name="IUser" table="iuser"><id name="id"><generator class="native"></generator></id><property name="name" not-null ="true"></property><one-to-one name="iCard"></one-to-one><many-to-one name="i2Card" unique="true"></many-to-one><set name="courses" table="iuc"><key column="iUserId"></key><many-to-many class="ICourse" column="iCourseId"></many-to-many></set> </class></hibernate-mapping>
package com.sm.hibernate.pojo;import java.util.Set;public class ICourse {private int id;private String name;private Set<IUser> iUsers;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;}public Set<IUser> getiUser() {return iUsers;}public void setiUser(Set<IUser> iUser) {this.iUsers = iUser;}}
<?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 package="com.sm.hibernate.pojo"><class name="ICourse" table="icourse"><id name="id"><generator class="native"></generator></id><property name="name" not-null ="true"></property><set name="iUsers" table="iuc"><key column="iCourseId"></key><many-to-many class="ICourse" column="iUserId"></many-to-many></set> </class></hibernate-mapping>
3结果
九月 27, 2013 10:11:44 上午 org.hibernate.annotations.common.Version <clinit>INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}九月 27, 2013 10:11:44 上午 org.hibernate.Version logVersionINFO: HHH000412: Hibernate Core {4.1.1}九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Environment <clinit>INFO: HHH000206: hibernate.properties not found九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Environment buildBytecodeProviderINFO: HHH000021: Bytecode provider name : javassist九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration configureINFO: HHH000043: Configuring from resource: /hibernate.cfg.xml九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration getConfigurationInputStreamINFO: HHH000040: Configuration resource: /hibernate.cfg.xml九月 27, 2013 10:11:44 上午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntityWARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration addResourceINFO: HHH000221: Reading mappings from resource: com/sm/hibernate/pojo/Book.hbm.xml九月 27, 2013 10:11:44 上午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntityWARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration addResourceINFO: HHH000221: Reading mappings from resource: com/sm/hibernate/pojo/IUser.hbm.xml九月 27, 2013 10:11:44 上午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntityWARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration addResourceINFO: HHH000221: Reading mappings from resource: com/sm/hibernate/pojo/ICard.hbm.xml九月 27, 2013 10:11:44 上午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntityWARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration addResourceINFO: HHH000221: Reading mappings from resource: com/sm/hibernate/pojo/I2Card.hbm.xml九月 27, 2013 10:11:44 上午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntityWARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration addResourceINFO: HHH000221: Reading mappings from resource: com/sm/hibernate/pojo/ICourse.hbm.xml九月 27, 2013 10:11:44 上午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntityWARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration addResourceINFO: HHH000221: Reading mappings from resource: com/sm/hibernate/pojo/Category.hbm.xml九月 27, 2013 10:11:44 上午 org.hibernate.internal.util.xml.DTDEntityResolver resolveEntityWARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!九月 27, 2013 10:11:44 上午 org.hibernate.cfg.Configuration doConfigureINFO: HHH000041: Configured SessionFactory: null九月 27, 2013 10:11:45 上午 org.hibernate.dialect.Dialect <init>INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect九月 27, 2013 10:11:45 上午 org.hibernate.tool.hbm2ddl.SchemaExport executeINFO: HHH000227: Running hbm2ddl schema export九月 27, 2013 10:11:45 上午 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureINFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)九月 27, 2013 10:11:45 上午 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureINFO: HHH000115: Hibernate connection pool size: 20九月 27, 2013 10:11:45 上午 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureINFO: HHH000006: Autocommit mode: false九月 27, 2013 10:11:45 上午 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureINFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/wanju]九月 27, 2013 10:11:45 上午 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureINFO: HHH000046: Connection properties: {user=root, password=****} alter table book drop foreign key FK2E3AE949F733E alter table icard drop foreign key FK5F61EF9DFFCD6A8 alter table iuc drop foreign key FK198B735A1D52C九月 27, 2013 10:11:45 上午 org.hibernate.tool.hbm2ddl.SchemaExport performERROR: HHH000389: Unsuccessful: alter table iuc drop foreign key FK198B735A1D52C alter table iuc drop foreign key FK198B76096495C九月 27, 2013 10:11:45 上午 org.hibernate.tool.hbm2ddl.SchemaExport performERROR: Table 'wanju.iuc' doesn't exist九月 27, 2013 10:11:45 上午 org.hibernate.tool.hbm2ddl.SchemaExport performERROR: HHH000389: Unsuccessful: alter table iuc drop foreign key FK198B76096495C九月 27, 2013 10:11:45 上午 org.hibernate.tool.hbm2ddl.SchemaExport performERROR: Table 'wanju.iuc' doesn't exist alter table iuc drop foreign key FK198B76F252F3C九月 27, 2013 10:11:45 上午 org.hibernate.tool.hbm2ddl.SchemaExport performERROR: HHH000389: Unsuccessful: alter table iuc drop foreign key FK198B76F252F3C九月 27, 2013 10:11:45 上午 org.hibernate.tool.hbm2ddl.SchemaExport performERROR: Table 'wanju.iuc' doesn't exist alter table iuser drop foreign key FK5FE8FB4D3B53C79 drop table if exists book drop table if exists category drop table if exists i2card drop table if exists icard drop table if exists icourse drop table if exists iuc drop table if exists iuser create table book ( id integer not null auto_increment, name varchar(200) not null, author varchar(50) not null, categoryId integer, primary key (id) ) create table category ( id integer not null auto_increment, name varchar(200) not null, primary key (id) ) create table i2card ( id integer not null auto_increment, name varchar(255) not null, primary key (id) ) create table icard ( id integer not null, name varchar(255) not null, primary key (id) ) create table icourse ( id integer not null auto_increment, name varchar(255) not null, primary key (id) ) create table iuc ( iUserId integer not null, iCourseId integer not null, primary key (iCourseId, iUserId) ) create table iuser ( id integer not null auto_increment, name varchar(255) not null, i2Card integer unique, primary key (id) ) alter table book add index FK2E3AE949F733E (categoryId), add constraint FK2E3AE949F733E foreign key (categoryId) references category (id) alter table icard add index FK5F61EF9DFFCD6A8 (id), add constraint FK5F61EF9DFFCD6A8 foreign key (id) references iuser (id) alter table iuc add index FK198B735A1D52C (iUserId), add constraint FK198B735A1D52C foreign key (iUserId) references icourse (id) alter table iuc add index FK198B76096495C (iUserId), add constraint FK198B76096495C foreign key (iUserId) references iuser (id) alter table iuc add index FK198B76F252F3C (iCourseId), add constraint FK198B76F252F3C foreign key (iCourseId) references icourse (id) alter table iuser add index FK5FE8FB4D3B53C79 (i2Card), add constraint FK5FE8FB4D3B53C79 foreign key (i2Card) references i2card (id)九月 27, 2013 10:11:47 上午 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl stopINFO: HHH000030: Cleaning up connection pool [jdbc:mysql://localhost:3306/wanju]九月 27, 2013 10:11:47 上午 org.hibernate.tool.hbm2ddl.SchemaExport executeINFO: HHH000230: Schema export complete
注解版看的稍微简单:
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.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.OneToMany;import javax.persistence.Table;@Entitypublic class Teacher {private int id;private String name;private Set<Student> students = new HashSet<Student>();@Id@GeneratedValuepublic 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;}@ManyToMany@JoinTable(name="t_s",joinColumns={@JoinColumn(name="teacher_id")},inverseJoinColumns={@JoinColumn(name="student_id")})public Set<Student> getStudents() {return students;}public void setStudents(Set<Student> students) {this.students = students;}}
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.ManyToMany;@Entitypublic class Student {private int id;private String name;private Set<Teacher> teachers = new HashSet<Teacher>();@ManyToMany(mappedBy="students")public Set<Teacher> getTeachers() {return teachers;}public void setTeachers(Set<Teacher> teachers) {this.teachers = teachers;}@Id@GeneratedValuepublic 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;}}
- Hibernate多对多映射为第三张表manytomany【xml和注解】实例(十七)
- Hibernate之模拟三表问题之多对多manytomany之映射为3表注解版-与(十七)xml版本对应(二十三)
- Hibernate中的manytomany映射实例一(多对多双向)
- hibernate关系映射--单向多对多@ManyToMany
- hibernate关系映射--双向多对多@ManyToMany
- Hibernate中manytomany实例二(多对多单向)
- Hibernate Annotation注解方式完成表映射OneToOne, OneToMany, ManyToMany
- Hibernate多对一实例【xml和注解】many-to-one(十六)
- Hibernate 单边多对多关系 @ManyToMany
- Hibernate关系映射(六)多对多单向关联@ManyToMany Annotation方式
- Hibernate关系映射(七)多对多双向关联@ManyToMany Annotation方式
- Hibernate中的manytomany映射实例一
- Hibernate中的manytomany映射实例一
- hibernate(八)注解基础、注解映射表、注解多表操作多对一和一对多
- hibernate单向多对多映射(many-to-many)XML与注解版
- hibernate双向多对多关联映射XML与注解版
- hibernate单向多对一关联映射(many-to-one)XML与注解版
- 关系/对象映射 多对多关系(@ManyToMany 注释)【
- 大整数乘法原理(JAVA)
- Android的数据存储--SharedPreferences
- 0927
- 通过ATL开发COM概述
- 在Mac OS X中配置Apache + PHP + MySQL
- Hibernate多对多映射为第三张表manytomany【xml和注解】实例(十七)
- ListEntry 链表图解,及解析 InsertTailList & RemoveHeadList&RemoveEntryList函数
- 《程序员》 -- 对国内云计算三个现象的思考
- hdu 4619Warm up 2
- [读书笔记]CIO Comprehensive Practice - Chapter1
- OpenFlow基础概念理解(3) OpenFlow架构
- session bean
- Boost学习系列5-字符串处理
- Cited from http://hi.baidu.com/zengzhaonong/blog/item/4b901ee9b5ef343cb90e2d16.html