在整合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. [转]linux内核分析笔记----内存管理

    转自:http://blog.csdn.net/Baiduluckyboy/article/details/9667933 内存管理,不用多说,言简意赅.在内核里分配内存还真不是件容易的事情,根本上是 ...

  2. 保持简单----纪念丹尼斯•里奇(Dennis Ritchie)

    http://www.ruanyifeng.com/blog/2011/10/dennis_ritchie.html

  3. Java并发包中线程池的种类和特点介绍

    Java并发包提供了包括原子量.并发集合.同步器.可重入锁.线程池等强大工具这里学习一下线程池的种类和特性介绍. 如果每项任务都分配一个线程,当任务特别多的时候,可能会超出系统承载能力.而且线程的创建 ...

  4. eclipse上的.properties文件中文编辑显示处理

    最近在对接银联备份金,将相应的SDK导入到eclipse后,打开.properties文件中文注释变成了如下样子,很不方便查阅参照: 平常开发我们希望看到的是如下样子,很直观能明确配置的参数代表的信息 ...

  5. Spring Boot+BootStrap fileInput 多图片上传

    一.依赖文件 <link rel="stylesheet" type="text/css" th:href="@{/js/bootstrap/c ...

  6. AVAudioSession(4):响应音频中断事件

    本文转自:AVAudioSession(4):响应音频中断事件 | www.samirchen.com 本文内容主要来源于 Responding to Interruptions. 当一个音频中断到来 ...

  7. 为什么 PHP 程序员应该学习使用 Swoole

    最近两个月一直在研究 Swoole,研究成果即将在6.21正式开源发布,这段时间没有来水文章,趁着今天放假来水水吧. 借助这篇文章,我希望能够把 Swoole 安利给更多人.虽然 Swoole 可能目 ...

  8. Jclemo_ CTF_WEEK1~2学习总结

    Jclemo_ CTF_WEEK1~2学习总结 纯属因为感觉有趣,加入了ForDKYCTF小组学习,心得体会就不说了,总结一下最近的学习知识点(不全,参考我自己的940133658@qq.com的印象 ...

  9. 20145310《Java程序设计》第4次实验报告

    20145310<Java程序设计>第4次实验报告 实验内容 搭建Android环境 运行Android 修改代码并输出自己的学号 实验步骤 搭建Android环境 安装Android S ...

  10. Student : IComparable<Student> 以及逆变和协变

    IComparable<Student>是Student的父类,所以IComparable<Student>可以接收Student.但是在使用CompareTo方法的时候,必须 ...