Hibernate学习的一个问题

jaisokforron 2010-05-06 07:05:50
在学习Hibernate的集合映射(用List映射),想做成多对多的List集合映射,单向的能做成功,可是双向的老是报错, Field 't_index' doesn't have a default value可是一个它要什么默认值啊?代码如下,请指教
public class Student {

private int id;
private String name;
private Date creDate;
private List<Teacher> teachers;……}

public class Teacher {

private int id;
private int age;
private String pro;
private List<Student> students;……}

<?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.test.vo">
<class name="Teacher" table="t_teacher">
<id name="id">
<generator class="native"/>
</id>
<property name="pro" column="pro"/>
<property name="age" column="age"/>


<list name="students" table="t_teacher_student" cascade="save-update">
<key column="t_id" not-null="true"></key>
<index column="s_index"></index>
<many-to-many class="Student" column="s_id"></many-to-many>
</list>

</class>
</hibernate-mapping>

<hibernate-mapping package="com.test.vo">
<class name="Student" table="t_student">
<id name="id">
<generator class="native"/>
</id>
<property name="name" column="sname"/>
<property name="creDate" column="credate" type="date"/>

<list name="teachers" table="t_teacher_student" cascade="save-update">
<key column="s_id" not-null="true"></key>
<index column="t_index"></index>
<many-to-many class="Teacher" column="t_id"></many-to-many>
</list>

</class>
</hibernate-mapping>

public class TestSave1 extends TestCase {

public void save1(){
Session session=null;
try {
session=HibernateSessionFactory.getSession();
session.beginTransaction();
Student s1=new Student();
s1.setName("s1");
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
try {
s1.setCreDate(sf.parse("1988-08-09"));
} catch (ParseException e) {
e.printStackTrace();
}

Student s2=new Student();
s2.setName("s2");
try {
s2.setCreDate(sf.parse("1988-09-08"));
} catch (ParseException e) {
e.printStackTrace();
}

Teacher t1=new Teacher();

List<Student> list=new ArrayList<Student>();
list.add(s1);
list.add(s2);
t1.setAge(77);
t1.setPro("computer");
t1.setStudents(list);

session.save(t1);
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
} catch(Exception ee){
ee.printStackTrace();
} finally{
HibernateSessionFactory.closeSession();
} }
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaisokforron 2010-05-10
  • 打赏
  • 举报
回复
我也准备放弃它用Set了,至于业务逻辑,取出来再说,学习了,谢谢……
angel 2010-05-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huangchbao 的回复:]
不建议你使用List来映射···因为List映射需要多对多表中要有一个区分字段··是避免重复的!
建议你使用Set来映射
public class Student {

private int id;
private String name;
private Date creDate;
private Set<Teacher> teachers=new HashSet……
[/Quote]
+1
乱世出英雄 2010-05-09
  • 打赏
  • 举报
回复
用set来映射啊!在set的props标签中配置。
study_liuy 2010-05-08
  • 打赏
  • 举报
回复
唉 怎么用还不会呢!
auklli 2010-05-08
  • 打赏
  • 举报
回复
不能两边都拥有控制权 必须一方放弃维护关系 inverse="true"
hepeng_8 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huangchbao 的回复:]
不建议你使用List来映射···因为List映射需要多对多表中要有一个区分字段··是避免重复的!
建议你使用Set来映射
public class Student {

private int id;
private String name;
private Date creDate;
private Set<Teacher> teachers=new HashSet……
[/Quote]
tong 一
handsome_huxiulei 2010-05-06
  • 打赏
  • 举报
回复
我也不晓得 没怎么高过..
auklli 2010-05-06
  • 打赏
  • 举报
回复
用list还真不知道怎么搞 用set咯 官方也推荐用。。
huangchbao 2010-05-06
  • 打赏
  • 举报
回复
不建议你使用List来映射···因为List映射需要多对多表中要有一个区分字段··是避免重复的!
建议你使用Set来映射
public class Student {

private int id;
private String name;
private Date creDate;
private Set<Teacher> teachers=new HashSet<Teacher>(0);
}
public class Teacher {

private int id;
private String name;
private Date creDate;
private Set<Student> students=new HashSet<Student>(0);
}

在XML配置文件中使用set节点来映射就哦了!
这是一个实际使用中的项目,可访问 http://cdbke.cuit.edu.cn 可查看效果及功能,后台需要登录后才能使用(出于安全性考虑这里就不给大家介绍了,另外还有一个struts1版本的,如有需要可以与我联系)。 此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿google人名自动补全;头像上传剪切压缩处理。 包含有完整的jar包和源代码,可以直接下载编译部署和运行,这是专门为我们实验室定制开发的。虽然后台逻辑并不复杂,但已经包含了架构基于s2sh技术型系统的全部基础部分:如分页,缓存,文件上传,连接池等。很适合学习使用,希望对初学JavaEE WEB开的人有所帮助。 这个资源在去年发布了第一版,已经有很多朋友下了觉得对他们有帮助,所以我才再发了一个第二版,希望对有需要的朋友有所帮助。本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范检查,代码审查等功能(与此相关的jar包由于上传文件大小限制未导入) 本系统一直在使用中,所以还会不段更新,之后我打算再做一个基于javaee6的实现,给需要想学习ejb3.1等技术的朋友一个参考实现 集成测试相关jar包和更新构建脚本下载:http://download.csdn.net/source/2427972

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧