<?xml version="1.0"?>
<!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 - Hibernate Tools
-->
<hibernate-mapping>
    <class name="EchoMessage" table="echo_message">
        <id name="id">
            <column name="id" />
            <generator class="native"></generator>
        </id>
        <property name="msg" type="java.lang.String">
            <column name="msg" />
        </property>
    </class>
</hibernate-mapping>

解决方案 »

  1.   

    SPRING 配置:<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation">
    <value>file:src/hibernate.cfg.xml</value>
    </property>
    </bean>
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
    <property name="sessionFactory">
    <ref local="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="messageDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
    <property name="transactionManager">
    <ref bean="transactionManager" />
    </property>
    <property name="target">
    <ref local="messageDAO" />
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    </bean>
    <bean id="messageDAO" class="MessageDAOHibernate" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
    <property name="sessionFactory">
    <ref local="sessionFactory" />
    </property>
    </bean>
    <bean name="test" class="HibernateTest" singleton="false">
      <property name="messageDAO">
       <ref bean="messageDAOProxy" />
      </property>
     </bean>

    </beans>
      

  2.   

    DAO:import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class MessageDAOHibernate extends HibernateDaoSupport implements
    IMessageDAO { public List getMessages() {
    return getHibernateTemplate().find("from echo_message"); 
    } public EchoMessage getMessage(Integer id) {
    return (EchoMessage) getHibernateTemplate().get(EchoMessage.class,id); } public void saveMessage(EchoMessage msg) {
    getHibernateTemplate().saveOrUpdate(msg);
    } public void removeMessage(Integer id) {
    Object msg=getHibernateTemplate().load(EchoMessage.class,id);
    getHibernateTemplate().delete(msg);
    }}
    事实上,如果我程序调用public EchoMessage getMessage(Integer id)这个函数是正常的,如果调用public List getMessages() 就抛出了以上异常
      

  3.   

    “from echo_message” 写错了,Hql的语法是"from ${classname}"echo_message --->EchoMessage用getHibernateTemplate().loadAll(EchoMessage.class)不好吗?,还有利用一级缓存的可能。
      

  4.   

    谢谢Saro(三生) ,问题解决