tidyboy1221 发表于 2008-9-13 18:32

请教一个关于hibername的many-to-one的问题。

我定义了两各类:event ,location类。event包含了一个location类的对象
Event.hbm.xml的配置文件如下:
<class name="Event" table="events">
                <id name="id" type="java.lang.Integer">
                        <generator class="increment"></generator>
                </id>
                <property name="name" type="java.lang.String"></property>
                <!--<property name="startDate" column="start_date" type="date"></property>  -->
                <property name="duration" column="duratiion" type="java.lang.Integer"></property>
                <property name="startDate" column="startDate" type="java.lang.String"></property>
                [color=Red]<many-to-one name="location" column="location_id" class="Location"></many-to-one>[/color]
</class>
Location.hbm.xml的配置文件如下
<class name="Location" table="locations">
                <id name="id" type="java.lang.Integer">
                        <generator class="increment"></generator>
                </id>
                <property name="name" type="java.lang.String"></property>
                <property name="address" type="java.lang.String"></property>
</class>
问题是:当我持久化这两个类后,"location_id"字段为空,其他字段都很正常。请问这是怎么回事?
我感觉好像是配置文件好像少其他的配置语句。
我的测试类的内容如下:
                Configuration configuraton;
                SessionFactory sessionFactory;
                Session session;
                // 实例化Configuration
                configuraton=new Configuration().configure();
                // 实例化SessionFactory
                sessionFactory =configuraton.buildSessionFactory();
                // 实例化Session
                session = sessionFactory.openSession();
                Event event=new Event();
                Location location=new Location();
                event.setName("first");
                event.setStartDate("21-12月-83");
                event.setDuration(10);
                location.setName("china");
                location.setAddress("china");
                Transaction tx = session.beginTransaction();
                session.save(event);
                session.save(location);
                tx.commit();
                session.flush();
                session.clear();

恋轩念伊人 发表于 2008-9-14 15:56

你把错误也写上拉,还有你的
Location.hbm.xml里面怎么没有<ont - to - many>

恋轩念伊人 发表于 2008-9-14 15:57

<generator class="increment"></generator>
这个我不是很明白,我们一般好象都是<generator class="native"></generator>

tidyboy1221 发表于 2008-9-19 21:00

谢谢各位。问题已经找到了。我没有在event对象中保存location对象,所以造成这样的问题。
我有点马虎、大意了。

页: [1]

编程论坛