Classes.java:
private int id;
private String name; private Set students;
---------------------
Classes.hbm.xml:
<class name="com.my.hibernate.Classes" table="tb_classes">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<!-- 设置inverse 属性,将反转,将给多的一端,使update时效-->
<set name="students" inverse="false" cascade="all">
<key column="classesId" />
<one-to-many class="com.my.hibernate.Student" />
</set>
</class>
------------------------------
Student.java:
private int id;
private String name; private Classes classes;
------------------------------
Student.hbm.xml:
<class name="com.my.hibernate.Student" table="tb_student">
<id name="id">
<generator class="native" />
</id>
<property name="name" type="text" />
<!-- 双向,不加column属性,将在tb_student新添加一个字段classes,要保持一致classesId -->
<many-to-one name="classes" column="classesId" />
</class>
----------------------------------
数据库为Sql server 2000 sp4,Hibernate3.2.
当我通过:
-----------------------------------
public void testLoad1(){
Session session = null;
try{
session = HibernateUtils.getSession();
session.beginTransaction();
Classes classes = (Classes)session.load(Classes.class, 1);
System.out.println("classes.name :"+classes.getName());
Set students = classes.getStudents();
for(Iterator iter=students.iterator();iter.hasNext();){
Student student = (Student)iter.next();
System.out.println("student.name :"+student.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
-------------------------------------------
就报:org.hibernate.exception.GenericJDBCException: could not initialize a collection: [com.my.hibernate.Classes.students#1]
当我将:type="text"取掉,name字段的类型为varchar类型时,一切正常!但是,我现在,要name字段类型为text,怎么解决这个问题呢?
但是,当我把数据库改为mysql时,配置文件不变,运行程序又一切正常!
private int id;
private String name; private Set students;
---------------------
Classes.hbm.xml:
<class name="com.my.hibernate.Classes" table="tb_classes">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<!-- 设置inverse 属性,将反转,将给多的一端,使update时效-->
<set name="students" inverse="false" cascade="all">
<key column="classesId" />
<one-to-many class="com.my.hibernate.Student" />
</set>
</class>
------------------------------
Student.java:
private int id;
private String name; private Classes classes;
------------------------------
Student.hbm.xml:
<class name="com.my.hibernate.Student" table="tb_student">
<id name="id">
<generator class="native" />
</id>
<property name="name" type="text" />
<!-- 双向,不加column属性,将在tb_student新添加一个字段classes,要保持一致classesId -->
<many-to-one name="classes" column="classesId" />
</class>
----------------------------------
数据库为Sql server 2000 sp4,Hibernate3.2.
当我通过:
-----------------------------------
public void testLoad1(){
Session session = null;
try{
session = HibernateUtils.getSession();
session.beginTransaction();
Classes classes = (Classes)session.load(Classes.class, 1);
System.out.println("classes.name :"+classes.getName());
Set students = classes.getStudents();
for(Iterator iter=students.iterator();iter.hasNext();){
Student student = (Student)iter.next();
System.out.println("student.name :"+student.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
-------------------------------------------
就报:org.hibernate.exception.GenericJDBCException: could not initialize a collection: [com.my.hibernate.Classes.students#1]
当我将:type="text"取掉,name字段的类型为varchar类型时,一切正常!但是,我现在,要name字段类型为text,怎么解决这个问题呢?
但是,当我把数据库改为mysql时,配置文件不变,运行程序又一切正常!
还有,如果你使用sql server2005就可以使用varchar(max),这样就可以存储2GB的数据。
text不是Java的数据类型.
pay_checkIdea text null,
</property>
<property name="payCheckIdea" type="java.lang.String">
<column name="pay_checkIdea" />
</property>数据库里面是text hibernate配置文件里面也用 java.lang.String
映射文件也用java.lang.String没错!
private String name;