做的是类似留言版的东东,User 是用户表的映射,Message帖子表的映射
很郁闷!!!!!

解决方案 »

  1.   

    你得贴你save方法是怎么写的啊,贴个调用有什么可看的?
      

  2.   

    你的MessageDao是怎么实现的呢?还有,一般DAO对象都是单例,没有人会每次需要Dao的时候就new一个的。
      

  3.   

    MyEclips 自动生成的MessageDAO ,我调用它的save 方法public void save(Message transientInstance) {
    log.debug("saving Message instance");
    try {
    getSession().save(transientInstance);
    System.out.println("save successful");
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }System.out.println("save successful");
    这个都打印了
      

  4.   

    贴hibernate.cfg.xml
    message.hbm.xml
      

  5.   

    查看日志,打印Hibernate生成的sql
      

  6.   

    hibernate.cfg.xml<?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration> <session-factory>
    <property name="connection.username">root</property>
    <property name="connection.url">
    jdbc:mysql://localhost/accp
    </property>
    <property name="dialect">
    org.hibernate.dialect.MySQLDialect
    </property>
    <property name="myeclipse.connection.profile">mys</property>
    <property name="connection.password">my</property>
    <property name="connection.driver_class">
    com.mysql.jdbc.Driver
    </property>
    <property name="show_sql">true</property>
    <mapping resource="com/accp/User.hbm.xml" />
    <mapping resource="com/accp/RReply.hbm.xml" />
    <mapping resource="com/accp/Message.hbm.xml" /> </session-factory></hibernate-configuration>Message.hbm.xml<?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.accp.Message" table="message" catalog="accp">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="increment" />
            </id>
            <many-to-one name="user" class="com.accp.User" fetch="select">
                <column name="user_id" unique="true" />
            </many-to-one>
            <property name="context" type="java.lang.String">
                <column name="context" length="30" />
            </property>
            <property name="title" type="java.lang.String">
                <column name="title" length="32" />
            </property>
            <property name="pubDate" type="java.lang.String">
                <column name="pub_date" length="20" />
            </property>
            <property name="pubName" type="java.lang.String">
                <column name="pub_name" length="20" />
            </property>
            <set name="RReplies" inverse="true">
                <key>
                    <column name="message_id" unique="true" />
                </key>
                <one-to-many class="com.accp.RReply" />
            </set>
        </class>
    </hibernate-mapping>我是楼主
      

  7.   

    save方法里改成这样试试
    Transaction tr=session.beginTransaction();
    getSession().save(transientInstance);
    tr.commit();
      

  8.   

    把localhost后面加上端口3306试试,把执行后系统打印的所有信息也贴出来。
      

  9.   

    to 10楼,save()方法是hibernate自己生成的,应该已经封装了这个了吧
    Transaction tr=session.beginTransaction(); 
    tr.commit();
      

  10.   

    事务~~~~~~~~~~~~
    save update delete必须要有事务
    hibernate的事务直接调用jdbc的,默认关闭事务,需要手动打开关闭
    或者采用spring的事务方式,用拦截器来实现
      

  11.   

    Hibernate: select max(id) from user
    Hibernate: insert into accp.user (userName, passWord, id) values (?, ?, ?)
    Hibernate: select message0_.id as id2_, message0_.user_id as user2_2_, message0_.context as context2_, message0_.title as title2_, message0_.pub_date as pub5_2_, message0_.pub_name as pub6_2_ from accp.message message0_
    lixin
    Hibernate: select max(id) from message
    save successful
    这是从登陆到发新帖的过程打印的信息,
    登陆查询没问题!!
      

  12.   

    谢谢大家,问题已经解决,就是事务的问题,
    原来,IDE自己生成的save()没有封装事务,需要自己加进去
      

  13.   

    不要相信IDE能干所有的事,呵呵。
      

  14.   

    楼主用什么来生成DAO和OBJECT CLASS的?我用的是hibernate synchronizer,在他的DAO里封装好了事务,这样对单张表更新满好用的,直接save就好。但是对多张表进行更新的时候就遇到需要同一个事务,这个有点不好弄。
    有朋友遇到过吗?求教
      

  15.   

    你可以用spring里的包装类 直接可以用SAVE方法 SPRING都帮你启好事物