急:一对一 配置问题,外键插不进去值,各位谢谢

156032zhang 2010-07-12
一个student表 一个身份证号表

public class Student {
private String id;
private String name;
private String codeId;//作为外键连接code表
private Code code;

省略get/set
}

public class Code {
private int id;
private String code;
private Student stu;

省略get/set
}

xml配置如下

<hibernate-mapping package="model">
    <class name="Student" table="student" lazy="false">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name" type="string"/>
        <property name="codeId" type="string"/>
        <one-to-one name="code" class="model.Code" cascade="all" fetch="join" />
    </class>
</hibernate-mapping>


<hibernate-mapping package="model">
    <class name="Code" table="code" lazy="false">
        <id name="id">
        <generator class="native"></generator>
        </id>
        <property name="code" type="string"/>
        <many-to-one name="stu" class="model.Student" unique="true" cascade="all" fetch="join"  />
    </class>
</hibernate-mapping>


以下为前台得到值 然后session.save进去数据库
public String creat() {
stu.getName();
code.getCode();
DaoImpl daoImpl=new DaoImpl();
daoImpl.creat(code);
stu.setCode(code);
code.setStu(stu);
daoImpl.saveorupdate(stu);
return "success";
}

其他都能插入值,请问各位 为什么student表里的codeId插不进去值呢?配置文件错了 还是哪写错了?

多谢了,已经折腾很久了。。就是弄不出来。。
llade 2010-07-12
配置文件明显有误。。。CodeId是外键,那就没必要把它配置为属性。
s-s-h 2010-07-12
llade 写道
配置文件明显有误。。。CodeId是外键,那就没必要把它配置为属性。

同意ls的
156032zhang 2010-07-13
正确的应该怎么配置啊。。。。。能帮忙写出来么 

多谢了
llade 2010-07-13
<hibernate-mapping package="model">
    <class name="Student" table="student" lazy="false">
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name" type="string"/>
        <one-to-one name="code" column="codeid" class="model.Code" cascade="all" fetch="join" />
    </class>
</hibernate-mapping>

不过,没有验证过,自己验证一下,或者参考Hibernate的文档。
javaxiang 2010-07-14
可以配成多对一的
kjj 2010-07-18
照着文档做都能做错,罚回去再做100遍!!!
pwm5712 2010-07-22
pwm5712 2010-07-22
林海之歌 2010-07-24
主对象Student
<one-to-one name="code" class="model.Code" cascade="all" />
不需要fetch="join",一对一默认立即加载。

附属对象Code
<hibernate-mapping package="model">
    <class name="Code" table="code" lazy="false">
        <id name="id">
            <generator class="foreign">
            <param name="property">stu</param>
            </generator>       
        </id>
        <property name="code" type="string"/>
        <one-to-one name="stu" class="model.Student"  cascade="none">
        </one-to-one>
    </class>
</hibernate-mapping>
两边都要配置one-to-one
Global site tag (gtag.js) - Google Analytics