使用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 的时候 就出错了,是不是忘了哪一步?
连接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 的时候 就出错了,是不是忘了哪一步?
<property name="packagesToScan">
<list>
<value>org/workflow/entity/Student</value>
</list>
</property>我网上找了很多种方法都不行如:
<value>org.workflow.entity.Student</value>
<value>org.workflow.entity.*</value>
是int 我改了还是不行,不过谢谢您的提醒!
是DAO类有继承HibernateDaoSupport现在问题是,找不到实体类! 如果是找不到连接的话应该是 提示sessionFactory恩,谢谢3楼的朋友!
恩,我用的是 hibernate3 spring2.5 的注解
然后 spring 与hibernate 组合,具体没有 hbm 文件,
注解的类 在上面已经写了,2楼提示我 第一个字段 是int 我已经改了哎,还是不行!
提示 Unknown entity: org.workflow.entity.Student 确定是 调用get方法出的????
不只是 get方法,只要是连接 sessionFactory 都提示找不到实体类!
不排除 sessionFactory 连接出问题,只是sessionFactory 出错的话,应该不是这样提示的!
我把方法换成
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]
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
Student又相应的Student.hbm.xml映射文件吗
可能我hibernate学的不深入,不用映射文件也可以吗
我知道Struts国际化时可以不用propertites文件,可以用java类文件代替
这个真没有接触过,楼主不妨介绍一下,也研究一下
<property name="packagesToScan">
<list>
<value>org/workflow/entity/Student</value>
</list>
</property>换成如下:
<property name="annotatedClasses">
<value>org.workflow.entity.Student</value>
</property>
配置文件如下时:
<property name="annotatedClasses">
<list>
<value>com.ss.a.Amodel</value>
<value>com.d.Bmodel</value>
</list>
</property>
这种配置的时候找不到实体类Bmodel,Amodel却是可用
改成这种<property name="packagesToScan">搜索entity的方式之后就两个都可用了
求解