1:map与set标签中的element子标签映射的是
原子类型(string,date,int,long.....),即可以直接映射到数据库表字段上的类型,而one-to-many
映射的则是实体类型,指的是无法映射到表的某个字段,而是映射到整张表的类型。
package model;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Team {
private String id;
private String teamName;
private Set students = new HashSet ();
public Set getStudents() {
return students;
}
public void setStudents(Set students) {
this.students = students;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name = "model.Team" table = "team" lazy="true">
<id name="id" type = "string">
<generator class="uuid"></generator>
</id>
<property name="teamName">
<column name="teamName" length="20"></column>
<type name="string"></type>
</property>
<set name="students" table = "student">
<key column = "team_id"></key>
<element column = "name" type = "string"></element>
</set>
</class>
</hibernate-mapping>
package model;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
//create table student (team_id varchar(255) not null, name varchar(255))
//create table team (id varchar(255) not null, teamName varchar(20), primary key (id))
//alter table student add index FK8FFE823B24EDBC5F (team_id), add constraint FK8FFE823B24EDBC5F foreign key (team_id) references team (id)
public class Create {
public static void main(String[] args) {
SchemaExport export = new SchemaExport(new Configuration().configure());
export.create(true, true);
}
}
package model;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class TEST {
public static void main(String[] args) {
save();
}
/**
*
* Hibernate: insert into team (teamName, id) values (?, ?)
Hibernate: insert into student (team_id, name) values (?, ?)
Hibernate: insert into student (team_id, name) values (?, ?)
Hibernate: insert into student (team_id, name) values (?, ?)
*/
static void save () {
Session session = HibernateUtil.getSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Team team = new Team ();
team.getStudents().add("zhangsan");
team.getStudents().add ("baother");
team.getStudents().add("lisi");
session.save(team);
tx.commit();
}catch (Exception e) {
e.printStackTrace();
}
}
}