映射关系,使用共享主键
generuser->generuserMsg
generuser:
<id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="increment" />
</id>
<one-to-one name="generuserMsg" class="com.iwt57.bbs.model.GeneruserMsg" 
        outer-join="true" cascade="all"></one-to-one>
generuserMsg:
<id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="foreign">
             <param name="property">generuser</param>
            </generator>
</id>
<one-to-one name="generuser" class="com.iwt57.bbs.model.Generuser"
constrained="true"></one-to-one>
1.generuser.getGeneruserMsg().setImage("default.jpg");
2.generuserManager.update(generuser);使用struts2从JSP向action中传值.我想修改一下image,但更新不成功
一对一关系怎么在更新时出现异常,把1去掉刚可正常更新,插入也正常
有谁知道原因???帮忙看一下!!!

解决方案 »

  1.   

    ApplicationContext context = new ClassPathXmlApplicationContext(
    "applicationContext.xml");
    GeneruserManager generuserManager = (GeneruserManager) context
    .getBean("generuserManager");

    Generuser generuser = generuserManager.get(2);
    generuser.getGeneruserMsg().setImage("test");

    generuserManager.update(generuser);
    在application直接运行可以更新,但从jsp页面获取对象后就不可以更新了
    org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one property: generuser
      

  2.   

    主外鍵約束問題,GeneruserManager 這個配置和類也貼出來啊。
      

  3.   

    实现类
    package com.iwt57.bbs.service.impl;import java.util.List;import com.iwt57.bbs.dao.GeneruserDao;
    import com.iwt57.bbs.model.Generuser;
    import com.iwt57.bbs.service.GeneruserManager;public class GeneruserManagerImpl implements GeneruserManager {
    GeneruserDao generuserDao; public void setGeneruserDao(GeneruserDao generuserDao) {
    this.generuserDao = generuserDao;
    } public void changePassword(Integer userId, String newPassword) {
    Generuser generuser = generuserDao.findById(userId);
    if (generuser != null) {
    generuser.setPassword(newPassword);
    generuserDao.update(generuser);
    }
    } public Generuser get(String username, String password) {
    return generuserDao.get(username, password);
    } public Generuser get(String username) { return generuserDao.get(username);
    } public void add(Generuser generuser) {
    generuser.setLevel(new Short("3"));
    generuser.getGeneruserMsg().setCreateTime(new java.util.Date());
    generuserDao.save(generuser);
    } public void del(Generuser generuser) {
    generuserDao.delete(generuser);
    } public void update(Generuser generuser) {
    generuserDao.update(generuser);
    } public void del(Integer id) {
    // TODO Auto-generated method stub
    Generuser generuser = generuserDao.findById(id);
    if (generuser != null) {
    generuserDao.delete(generuser);
    }
    } public List<Generuser> getList() {
    // TODO Auto-generated method stub
    return generuserDao.findAll();
    } public Generuser get(Integer id) {
    // TODO Auto-generated method stub
    return generuserDao.findById(id);
    }
    }我使用泛化类,类操作应该没有问题,我进行过调试了,
    如果不是jsp页面传值没有问题,或者传值在action不进行修改也没有问题
    1.generuser.getGeneruserMsg().setImage("default.jpg");
    2.generuserManager.update(generuser); 像这里,不要1更新没有问题.