在整合Spring+Hibernate时报该错误,sessionFactory配置如下:

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    .......
<!-- 自动扫描注解方式配置的hibernate类文件 -->
<property name="packagesToScan"> //最后发现是该处的错误
<list>
<value>sys.model</value>
</list>
</property>
    .......
</bean>

正如上面XML配置的那样,packageToScan是配置以注解方式配置Hibernate类,即如下这样的方式:

package sys.model;

import java.io.Serializable;
import java.util.Date; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType; @Entity
@Table(name = "User")
public class UserInfo implements Serializable {
private static final long serialVersionUID = 8427996478439081619L;
// Fields
private String id;
private String name;
private String pwd;
private Date createdatetime;
private Date modifydatetime;
/** full constructor */
public UserInfo(String id, String name, String pwd, Date createdatetime, Date modifydatetime) {
this.id = id;
this.name = name;
this.pwd = pwd;
this.createdatetime = createdatetime;
this.modifydatetime = modifydatetime;
} @Id
@Column(name = "ID", unique = true, nullable = false, length = 36)
public String getId() {
return this.id;
} public void setId(String id) {
this.id = id;
} @Column(name = "NAME", unique = true, nullable = false, length = 100)
public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} @Column(name = "PWD", nullable = false, length = 32)
public String getPwd() {
return this.pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} @Temporal(TemporalType.TIMESTAMP)
// 如果这里是这种TemporalType.DATE,那么时间在数据库中存的时候会是"2015-07-16 00:00:00"这种形式,时分秒都为零
@Column(name = "CREATEDATETIME", length = 7)
public Date getCreatedatetime() {
return this.createdatetime;
} public void setCreatedatetime(Date createdatetime) {
this.createdatetime = createdatetime;
} @Temporal(TemporalType.TIMESTAMP)
@Column(name = "MODIFYDATETIME", length = 7)
public Date getModifydatetime() {
return this.modifydatetime;
} public void setModifydatetime(Date modifydatetime) {
this.modifydatetime = modifydatetime;
} @Override
public String toString() {
return "[ID:" + id + " Name:" + name + " PassWord:" + pwd + " Createdatetime:" + createdatetime + " Modifydatetiem:" + modifydatetime + "]";
}
}

但是我整合式采用的*.hbm.xml的方式

aaarticlea/png;base64,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" alt="" />

这种方式最方便的方式是采用“mappingDirectoryLocations”

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    .......
<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/vrv/paw/domain</value>
</list>
</property>
</bean>

扩展:

mappingResources、mappingLocations、mappingDirectoryLocations
他们的区别:   
1. mappingResources:指定classpath下具体映射文件名

<property name="mappingResources">
<value>petclinic.hbm.xml </value>
</property>

2. mappingLocations:可以指定任何文件路径,并且可以指定前缀:classpath、file等

<property name="mappingLocations">
<value>/WEB-INF/petclinic.hbm.xml </value>
</property>
<property name="mappingLocations">
<value>classpath:/com/company/domain/petclinic.hbm.xml </value>
</property>

也可以用通配符指定,'*'指定一个文件(路径)名,'**'指定多个文件(路径)名,例如:

<property name="mappingLocations">
<value>classpath:/com/company/domainmaps/*.hbm.xml </value>
</property>

上面的配置是在com/company/domain包下任何maps路径下的hbm.xml文件都被加载为映射文件   
 
3. mappingDirectoryLocations:指定映射的文件路径

<property name="mappingDirectoryLocations">  <list>
<value>WEB-INF/HibernateMappings</value>
</list>
</property>

也可以通过classpath来指出

<property name="mappingDirectoryLocations">
<list>
<value>classpath:/XXX/package/</value>
</list>
</property>

总结:注解方式配置的hibernate类 与  *.hbm.xml  方式配置的类,在配置SessionFactory时配置方式是不同的,这是我以前没有注意的

no persistent classes found for query class: FROM com.vrv.paw.domain.User的更多相关文章

  1. [NHibernate]持久化类(Persistent Classes)

    系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 引言 持久化类是应用程序用来解决商业问题的类(比如,在电子交易程序中的Customer和Orde ...

  2. NHibernate官方文档中文版——持久化类(Persistent Classes)

    持久化类是一个应用程序中的类,主要用来实现业务逻辑(例如,在电商应用中的客户和订单类).持久化类,就像它的名字一样,生命周期短暂并且用来持久化的据库对象实例. 如果这些类的构造能够依照一些简单的原则, ...

  3. unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法

    一.unexpected token: *  的解决办法 首先要搞清楚sql与hql的区别! sql操作的是数据库表,而hql操作的是对象! sql中“select * from table”,而hq ...

  4. [NHibernate]条件查询Criteria Query

    目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点 ...

  5. HQL: The Hibernate Query Language

    Chapter 14. HQL: The Hibernate Query Language 14.1. Case Sensitivity 14.2. The from clause 14.3. Ass ...

  6. Persistent Data Structures

    原文链接:http://www.codeproject.com/Articles/9680/Persistent-Data-Structures Introduction When you hear ...

  7. How to: Generate XPO Business Classes for Existing Data Tables 如何:为现有数据表生成 XPO 业务类

    From the Tutorial and other documentation sources, you learned how to create business classes for yo ...

  8. How to: Implement a Custom Base Persistent Class 如何:实现自定义持久化基类

    XAF ships with the Business Class Library that contains a number of persistent classes ready for use ...

  9. Implement Custom Business Classes and Reference Properties 实现自定义业务类和引用属性(XPO)

    In this lesson, you will learn how to implement business classes from scratch. For this purpose, the ...

随机推荐

  1. Selenium的PageFactory & PageObject 在大型项目中的应用

    因为最近遇到的技术问题一直没找到可行的解决办法,一直在翻看selenium的源代码,之前写测试代码的时候就是拿来即用,写什么功能啊,就按手动的操作步骤去转换,近日看到一个文章,又去wiki上查了查,觉 ...

  2. python全栈开发从入门到放弃之内置函数

    1.locals.globals def func(): x = 1 y = 2 print(locals()) #打印局部作用域中的名字 print(globals()) #打印全局作用域中的名字 ...

  3. yield的表达式形式的应用(待补充)

    1.yield的表达式形式应用的定义: 在一个生成器函数内,将yield赋值给一个变量,这就是yield的表达式形式.也叫生成器的表达式形式 2.send方法的定义: (1)定义: yield的表达式 ...

  4. Python中常用技巧整理

    Python中os.path的妙用  http://xpleaf.blog.51cto.com/9315560/1736956

  5. 常用RDD

    只作为我个人笔记,没有过多解释 Transfor map filter filter之后,依然有三个分区,第二个分区为空,但不会消失 flatMap reduceByKey groupByKey() ...

  6. Druid学习之路 (一)Druid初识

    作者:Syn良子 出处:https://www.cnblogs.com/cssdongl/p/9588079.html 转载请注明出处 最近在学习和使用Druid.觉得一些章节有必要按照自己的理解翻译 ...

  7. Struts2.5.12中动态方法调用问题

    使用版本:struts-2.5.12-all 出现问题:在开启动态方法调用后,找不到没有匹配的路径映射 <constant name="struts.enable.DynamicMet ...

  8. Python 实例2—购物车

    老男孩教学学习笔记 """启动程序后,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒可随机退出,退出 ...

  9. Storm完整例子

    import backtype.storm.spout.SpoutOutputCollector; import backtype.storm.task.TopologyContext; import ...

  10. 【Head First Servlets and JSP】笔记 27: web 应用安全

    典型的安全问题:假冒者.窃听者.非法升级者 认证方式: Base64 .摘要认证 .客户端证书.表单认证,重点熟悉摘要算法( HASH . MD5 等) 安全机制:授权.认证.数据完整性.机密性 80 ...