出现的问题:
Hibernate: SELECT * FROM tbl_training_message_types ORDER BY msg_type_id ASC
09:37:52,656 WARN  [JDBCExceptionReporter:100] SQL Error: 208, SQLState: S0002
09:37:52,671 ERROR [JDBCExceptionReporter:101] 对象名  'tbl_training_message_types' 无效。
09:37:52,781 ERROR [[jsp]:711] Servlet.service() for servlet jsp threw exception
com.microsoft.sqlserver.jdbc.SQLServerException: 对象名  'tbl_training_message_types' 无效。
关键代码: session = HibernateUtil.openSession();
session.beginTransaction();
SQLQuery q = session.createSQLQuery("SELECT * FROM tbl_training_message_types ORDER BY msg_type_id ASC");
// SQLQuery q = session.createSQLQuery("SELECT TrainingMessageTypes.* FROM TrainingMessageTypes ORDER BY msg_type_id ASC");
q.addEntity(TrainingMessageTypes.class);
// q.addEntity("tbl_training_message_types", TrainingMessageTypes.class);
List list = q.list();
session.getTransaction().commit();
return list;

解决方案 »

  1.   

    tbl_training_message_types 表名是不是写错了
      

  2.   

    说明你库连接的不对。
    你先检查下你数据库连接。
    再就是检查你的hbm文件。是否设置了 catalog="属性。
      

  3.   

    你表tbl_training_message_types,在不在的?
      

  4.   

    数据库连接是正确的,我测试了。另:.hbm.xml中也加了catelog和scheme属性。
      

  5.   

    加个'tbl_training_message_types'<---试下。。两边加'<--这个符号~
      

  6.   


    session = HibernateUtil.openSession();
    session.beginTransaction();
    SQLQuery q = session.createSQLQuery("SELECT * FROM [chinalife].[dbo].[tbl_training_message_types] ORDER BY msg_type_id ASC");
    q.addEntity(TrainingMessageTypes.class);
    List list = q.list();
    session.getTransaction().commit();
    return list;我把代码修改为这样,还不行,提示:
    Hibernate: SELECT * FROM [chinalife].[dbo].[tbl_training_message_types] ORDER BY msg_type_id ASC
    11:09:47,921 WARN  [JDBCExceptionReporter:100] SQL Error: 208, SQLState: S0002
    11:09:47,921 ERROR [JDBCExceptionReporter:101] 对象名  'chinalife.dbo.tbl_training_message_types' 无效。
    11:09:47,937 ERROR [[jsp]:711] Servlet.service() for servlet jsp threw exception
    com.microsoft.sqlserver.jdbc.SQLServerException: 对象名  'chinalife.dbo.tbl_training_message_types' 无效。
    但是我在数据库中 SELECT * FROM [chinalife].[dbo].[tbl_training_message_types] ORDER BY msg_type_id ASC是可以执行并查询到数据的。
      

  7.   

    'chinalife.dbo.tbl_training_message_types' 这个换成对象名 不要出现表名
      

  8.   

    为什么换啊?我之前用的就是对象名(POJO类名)的,也没用,说是找不到对象。
      

  9.   

         SQLQuery q = session.createSQLQuery("SELECT * FROM tbl_training_message_types ORDER BY msg_type_id ASC");你这是执行SQL语句 谈何对象名?
      

  10.   

    那你那个配置文件是怎么写的 贴出来 还有pojo类
      

  11.   

    我之前写的是select * from TrainingMessageTypes ORDER BY msg_type_id ASC
    <?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">
    <hibernate-mapping default-lazy="false" auto-import="false" catalog="chinalife" schema="dbo">
    <class name="com.liferay.samplehibernate.model.trainmessagetypes.TrainingMessageTypes"
    table="tbl_training_message_types">
    <id name="msg_type_id" type="java.lang.String">
    <column name="msg_type_id" length="50" />
    <generator class="assigned" />
    </id>
    <property name="msg_type_description" column="msg_type_description" type="java.lang.String" />
    <property name="msg_logic_id" column="msg_logic_id" type="int" />
    <property name="via_PM" column="via_PM" type="byte"/>
    <property name="via_email" column="via_email" type="byte" />
    <property name="via_SMS" column="via_SMS" type="byte" />
    <property name="default_msg_id" column="default_msg_id" type="int" />
    <property name="created_by" column="created_by" type="java.lang.String" />
    <property name="create_date" column="create_date" type="java.util.Date" />
    <property name="modified_by" column="modified_by" type="java.lang.String" />
    <property name="modify_date" column="modify_date" type="java.util.Date" />
    </class>
    </hibernate-mapping>
    POJO类public class TrainingMessageTypes {
        private String msg_type_id;
        private String msg_type_description;
        private int msg_logic_id;
        private byte via_PM;
        private byte via_email;
        private byte via_SMS;
        private int default_msg_id;
        private String created_by;
        private Date create_date;
        private String modified_by;
        private Date modify_date;
    //setter/getter省略