使用SSH2
连接MySQL
数据库:mysql> desc student;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| S_no   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| S_name | varchar(45)      | NO   |     | NULL    |                |
| S_sex  | varchar(45)      | NO   |     | NULL    |                |
| S_age  | varchar(45)      | NO   |     | NULL    |                |
+--------+------------------+------+-----+---------+----------------+实体类@Entity
@Table(name="student",schema="test")
public class Student implements java.io.Serializable { private String sNo;
private String sName;
private String sSex;
private String sAge; public Student() {
} public Student(String sName, String sSex, String sAge) {
this.sName = sName;
this.sSex = sSex;
this.sAge = sAge;
} @Id
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name="S_no")
public String getSNo() {
return this.sNo;
} public void setSNo(String sNo) {
this.sNo = sNo;
}
@Column(name="S_name")
public String getSName() {
return this.sName;
}
     …………
     ……spring配置文件 <bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
</props>

</property>
<property name="schemaUpdate" value="false"></property>
<property name="packagesToScan">
<list>
<value>org/workflow/entity/Student</value>
</list>
</property>
</bean>其它的都没问题
就运行到 DAO类的时候调用 
this.getHibernateTemplate().get()的时候
提示 Unknown entity: org.workflow.entity.Student 在 this.getHibernateTemplate() 之前 有输出 
System.out.println(Student.class);
输出的内容是 :class org.workflow.entity.Student 请教,问题出在哪,spring 文件以前连接ORACLE的时候一直都是这样配置的没问题
这次用Mysql 的时候 就出错了,是不是忘了哪一步?

解决方案 »

  1.   

    顺便提一下
    <property name="packagesToScan">
    <list>
    <value>org/workflow/entity/Student</value>
    </list>
    </property>我网上找了很多种方法都不行如:
    <value>org.workflow.entity.Student</value>
    <value>org.workflow.entity.*</value>
      

  2.   

    实体BEAN的sNo属性是int还是String?
      

  3.   

    Student 没有继承hibernatedaosupport,,
      

  4.   

    Student继承HibernateDaoSupport?是DAO继承才对。。楼上晕
      

  5.   


    是int 我改了还是不行,不过谢谢您的提醒!
      

  6.   


    是DAO类有继承HibernateDaoSupport现在问题是,找不到实体类! 如果是找不到连接的话应该是 提示sessionFactory恩,谢谢3楼的朋友!
      

  7.   

    那看看hbm映射是不是映射错了,别着急。
      

  8.   


    恩,我用的是 hibernate3 spring2.5 的注解
    然后 spring 与hibernate 组合,具体没有 hbm 文件,
    注解的类 在上面已经写了,2楼提示我 第一个字段 是int 我已经改了哎,还是不行!
      

  9.   

    你有把sessionFactory注入到dao里面吗?再把dao注入给action,检查下流程
      

  10.   

    恩注入进去了,流程没错,从action 到 biz  到DAO类的时候 才出错
      

  11.   

    this.getHibernateTemplate().get()的时候
    提示 Unknown entity: org.workflow.entity.Student  确定是 调用get方法出的????
      

  12.   


    不只是 get方法,只要是连接 sessionFactory 都提示找不到实体类!
    不排除 sessionFactory 连接出问题,只是sessionFactory 出错的话,应该不是这样提示的!
      

  13.   

    根据11楼的提示
    我把方法换成
    this.getHibernateTemplate().find("from Student");
    结果出错信息 提示:
    Student is not mapped [from Student] 
    Student is not mapped [from Student]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Student is not mapped [from Student]
      

  14.   

    又改成!
    this.getHibernateTemplate().find("from org.workflow.entity.Student");提示
    no persistent classes found for query class: from org.workflow.entity.Student
    页面又提示
    Unknown entity: org.workflow.entity.Student 
      

  15.   

    很明显是 找不到实体类,是映射方面的错误啊
    Student又相应的Student.hbm.xml映射文件吗
    可能我hibernate学的不深入,不用映射文件也可以吗
    我知道Struts国际化时可以不用propertites文件,可以用java类文件代替
    这个真没有接触过,楼主不妨介绍一下,也研究一下
      

  16.   

    实体类这样配置看看:
    <property name="packagesToScan">
    <list>
    <value>org/workflow/entity/Student</value>
    </list>
    </property>换成如下:
    <property name="annotatedClasses">
      <value>org.workflow.entity.Student</value>
    </property>
      

  17.   

    映射数据库的对象问题,我刚刚遇到这样的问题,不过我用的是SSH,重新生成了一遍hbm文件就好了。
      

  18.   

    看这个意思,貌似你使用的spring不是2.5.6以上啊~
      

  19.   

    我也遇到类似情况
    配置文件如下时:
      <property name="annotatedClasses">
    <list>
    <value>com.ss.a.Amodel</value>
    <value>com.d.Bmodel</value>
    </list>
    </property>
    这种配置的时候找不到实体类Bmodel,Amodel却是可用
    改成这种<property name="packagesToScan">搜索entity的方式之后就两个都可用了
    求解