首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • Hibernate save()问题!超急!一般人估计解决不了! [已结贴,结贴人:java2000_net]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-19 18:36:10 楼主
    下面是父类(含Projecter Agencies Tender三个子类,这三个子类我映射到数据库了.)
    public class SuperBean {
    public void setBusiness_type(String business_type) {

    }
    public void setCity(String city) {

    }
    public void setClose(int close) {

    }
    public void setCompany_name(String company_name) {

    }
    public void setCompany_type(String company_type) {

    }
    public void setContact(String contact) {

    }
    public void setContact_duty(String contact_duty) {

    }
    public void setContact_email(String contact_email) {

    }
    public void setContact_r_tel(String contact_r_tel) {

    }
    public void setContact_sex(String contact_sex) {

    }
    public void setCountry(String country) {

    }
    public void setFax(String fax) {

    }
    public void setIndustry_type(String industry_type) {

    }
    public void setOther(String other) {

    }
    public void setPassword(String password) {

    }
    public void setPost(String post) {

    }
    public void setPost_address(String post_address) {

    }
    public void setProvince(String province) {

    }
    public void setRegister_money(int register_money) {

    }
    public void setTel(String tel) {

    }

    public void setUsername(String username) {

    }

    }


    子类含有GET和SET方法,三个子类就是三个javaBEAN


    在注册处理页面:

    SuperBean obj=null;

    switch(type){
        case 0: break;
        case 1: obj = new Projecter(); break;
        case 2: obj = new Agencies();break;
        case 3: obj = new Tender();break;
    }

    //入BEAN
    obj.setUsername(username);
    ...
    obj.setFax(fax);

    HibernateDBConn.insertUser(obj);


    存数据库如下:

    (这个er 传过来是SuperBean型的,但是实现上)
    //某类型单位(如:Projecter Agencies Tender)增加新单位 insertUser(单位类型)
    public void insertUser(Object er) throws HibernateException{

    Session session=HibernateUtil.currentSession();
    Transaction tx=session.beginTransaction();

    session.save(er);

    tx.commit();
    HibernateUtil.closeSession();
    }


    现在这个方法存不了,我写成这样也不行session.save(Class.forName(er.getClass().getName()));
    session.save(Class.forName(er.getClass().getName()).newInstance());都不行,都报NullPointException错误.请问我不想写三个insert方法,怎么样做到通用,因为我们的系统以后还要升级,肯定不止三个类.

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-19 19:07:121楼 得分:4
    用hibernatetemplate
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-20 10:56:152楼 得分:0
    具体说一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-20 11:01:253楼 得分:0
    我们没架Spring框架,怎么办?难不成现在把Spring框架架上来???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-20 16:20:504楼 得分:4
    这样写没问题, 抛空指针, 应该是你的er=null了吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-21 18:40:195楼 得分:0
    我在注册时选择Projecter.我的ER怎么可能等于NULL呢,我在获得ER后还打印了一下,发现是Porjecter.但是一传到HibernateDBConn里就不行了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-25 15:44:026楼 得分:4
    打印下session 呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-28 09:46:387楼 得分:4
    你重新开启个SESSION,用openSession()这个方法去获取一个新的SESSION,而不要用currentSession();
    这个方法去获取当前的SESSION来保存对象,同时在SAVE()之前,打印出er这个对象,看是否为NULL.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shagan
    • 等级:
    发表于:2008-01-04 16:33:058楼 得分:4
    save(Ojbect)啊,自己会区分的啊?
    修改 删除 举报 引用 回复