用户表(user)
         private Integer userId;
private TblType tblType;
private String userName;
private String userPassword;
private Integer userJifen;
private Integer userGrade;
private Set tblRecords = new HashSet(0);
private Set tblIntermediaries = new HashSet(0);
private Set tblOnlies = new HashSet(0);
private Set tblSchools = new HashSet(0);
会员信息表(only)
private Integer onlyId;
private TblEducation tblEducationByWantEducationId;
private TblUser tblUser;
private TblEducation tblEducationByEducationId;
private TblApplicant tblApplicant;
private String onlySex;
private String onlyEmail;
private String onlyPhone;
private String onlyName;现在注册会员信息就直接会将页面的信息录入这两张表!~
// 用户信息默认数据
tblUser.setUserJifen(new Integer("50")); // 会员注册默认50分
tblUser.setUserGrade(new Integer("1")); // 会员注册默认1级
// 获得用户类型
TblType tblType = onlyService.findByIdType(new Integer("1"));
// 将用户类型set用户信息
tblUser.setTblType(tblType);
// 将用户信息SET会员信息
tblOnly.setTblUser(tblUser);
System.out.println(tblEducation.getEducationId());
System.out.println(tblEducationWant.getEducationId());
// 最高学历
TblEducation tblEducation1 = onlyService.findByIdEducation(tblEducation
.getEducationId());
// 想找的学历
TblEducation tblEducation2 = onlyService
.findByIdEducation(tblEducationWant.getEducationId());
// 将学历信息SET会员信息
tblOnly.setTblEducationByEducationId(tblEducation1);
tblOnly.setTblEducationByWantEducationId(tblEducation2);
// 添加会员信息
onlyService.saveOnly(tblOnly);但数据库2张表都为空时可以正常录入,第二次录入的时候它不会在User里面添加1条新纪录,而是直接在上一条信息上进行修改!谁能帮忙解决下!

解决方案 »

  1.   

    <?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">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.study.hibernate.entity.TblOnly" table="tbl_only" catalog="study">
            <id name="onlyId" type="java.lang.Integer">
                <column name="only_id" />
                <generator class="native" />
            </id>
            <many-to-one name="tblEducationByWantEducationId" class="com.study.hibernate.entity.TblEducation" fetch="select">
                <column name="wantEducation_id" not-null="true" />
            </many-to-one>
            <many-to-one name="tblUser" class="com.study.hibernate.entity.TblUser" fetch="select" cascade="save-update">
                <column name="user_id" not-null="true" />
            </many-to-one>
            <many-to-one name="tblEducationByEducationId" class="com.study.hibernate.entity.TblEducation" fetch="select">
                <column name="education_id" not-null="true" />
            </many-to-one>
            <many-to-one name="tblApplicant" class="com.study.hibernate.entity.TblApplicant" fetch="select">
                <column name="applicant_id" not-null="true" />
            </many-to-one>
            <property name="onlySex" type="java.lang.String">
                <column name="only_sex" not-null="true" />
            </property>
            <property name="onlyEmail" type="java.lang.String">
                <column name="only_email" not-null="true" />
            </property>
            <property name="onlyPhone" type="java.lang.String">
                <column name="only_phone" not-null="true" />
            </property>
            <property name="onlyName" type="java.lang.String">
                <column name="only_name" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
    用户映射
    <?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">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.study.hibernate.entity.TblUser" table="tbl_user" catalog="study">
            <id name="userId" type="java.lang.Integer">
                <column name="user_id" />
                <generator class="native" />
            </id>
            <many-to-one name="tblType" class="com.study.hibernate.entity.TblType" fetch="select">
                <column name="type_id" not-null="true" />
            </many-to-one>
            <property name="userName" type="java.lang.String">
                <column name="user_name" not-null="true" />
            </property>
            <property name="userPassword" type="java.lang.String">
                <column name="user_password" not-null="true" />
            </property>
            <property name="userJifen" type="java.lang.Integer">
                <column name="user_jifen" not-null="true" />
            </property>
            <property name="userGrade" type="java.lang.Integer">
                <column name="user_grade" not-null="true" />
            </property>
            <set name="tblRecords" inverse="true">
                <key>
                    <column name="user_id" not-null="false" />
                </key>
                <one-to-many class="com.study.hibernate.entity.TblRecord" />
            </set>
            <set name="tblIntermediaries" inverse="true">
                <key>
                    <column name="user_id" not-null="false" />
                </key>
                <one-to-many class="com.study.hibernate.entity.TblIntermediary" />
            </set>
            <set name="tblOnlies" inverse="true" cascade="all">
                <key>
                    <column name="user_id" not-null="false" />
                </key>
                <one-to-many class="com.study.hibernate.entity.TblOnly" />
            </set>
            <set name="tblSchools" inverse="true">
                <key>
                    <column name="user_id" not-null="false" />
                </key>
                <one-to-many class="com.study.hibernate.entity.TblSchool" />
            </set>
        </class>
    </hibernate-mapping>
      

  2.   

    你查看下onlyService这个类的saveOnly是如何实现的?如果调用了DAO层,看看DAO是如何实现的。是不是逻辑中写的和你预期的不一样!
      

  3.   

    恩,调用的DAO层
    public void save(TblOnly transientInstance) {
    log.debug("saving TblOnly instance");
    try {
    getHibernateTemplate().save(transientInstance);
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }这个方法就是用来保存会员信息的!
      

  4.   

    你要是重新部署一下,它就知道是新的数据 执行2个insert
    但到第二次的时候 就成update 了!在线等!
      

  5.   

    这不是hibernate吗?怎么说是struts2呢。
      

  6.   

    你这个问题都有问题,struts2跟save有何关系,save是持久层做的事情~lz没把概念弄清吧~
      

  7.   

    这个是struts2 和spring的关系,你得把action设置成非单例模式,在bean配置的时候,如果我答对了把分给我哦。
      

  8.   

    同意
    http://zhou568xiao.javaeye.com/blog/192208