一对多单向关联(annotation&xml)

数据库:两张表,多方加外键

一。编写多方类

@Entity
public class User {
	private int id;
	private String name;
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}


二、编写一方类
@Entity
public class Group {
	private int id;
	private String name;
	private Set<User> users =new HashSet<User>();
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	@OneToMany
	@JoinColumn(name="groupID")
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
	public String getName() {
		return name;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
}

增加装多方的集合,及标注@OneToMany配置,@JoinColumn是配置多方外键,不生成第三张中间表

三、配置hibernate.cfg.xml
<mapping class="org.hibernate.tutorial.domain.Group"/>
		<mapping class="org.hibernate.tutorial.domain.User"/>


四、测试结果
    create table Group (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )

    create table User (
        id integer not null auto_increment,
        name varchar(255),
        groupID integer,
        primary key (id)
    )

    alter table User 
        add index FK_k6brud1jwhinw4g4f6yafcqjm (groupID), 
        add constraint FK_k6brud1jwhinw4g4f6yafcqjm 
        foreign key (groupID) 
        references Group (id)



xml方式

一、编写如上两个类
二、编写多方User.hbm.xml配置
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping package="org.hibernate.tutorial.domain"> 

    <class name="User" table="User"> 
        <id name="id" column="User_ID"> 
            <generator class="native"/> 
        </id> 
        <property name="name"></property>
    </class> 

</hibernate-mapping> 


三、编写一方Group.hbm.xml配置
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping package="org.hibernate.tutorial.domain"> 

    <class name="Group" table="Group"> 
        <id name="id" column="group_Id"> 
            <generator class="native"/> 
        </id> 
        <property name="name"></property>
        <set name="users">
        	<key column="groupID"></key>
        	<one-to-many class="org.hibernate.tutorial.domain.User" />
        </set>
    </class> 

</hibernate-mapping> 

增加set集合配置,name='users',是配置一方属性。key配置映射到多方的列名, <one-to-many配置映射多方的实体类

四、配置hibernate.cfg.xml
<mapping resource="org/hibernate/tutorial/domain/Group.hbm.xml"/>
		<mapping resource="org/hibernate/tutorial/domain/User.hbm.xml"/>


五、测试结果如上

你可能感兴趣的:(annotation)