Hibernate的配置文件打包找不到实体类

公司最近要求把写好的代码打成JAR包,弄好后今天试了一下,居然报错:

org.hibernate.MappingException: Unknown entity: xx.xx.xx.User
    at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1092)
    at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2436)
    at org.hibernate.internal.SessionImpl.access$2100(SessionImpl.java:172)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2378)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2369)
    at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1047)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:979)

百思不得其解啊,后来和MyEclipse打出来的JAR一对比,才发现原来打包的时候配置文件不会被放入JAR包中。

那么我们打包是需要配置:

<resources>
    <resource>
        <directory>${basedir}/src/</directory>
        <includes>
            <include>**/*.hbm.xml</include>
        </includes>
    </resource>
</resources>

还有就是如果使用MyEclipse打包的时候需要勾选Add directory entries这个选项,不是打出来的包也不能加载实体类,可能提示一下错误信息:

no persistent classes found for query class:xxxx
org.hibernate.QueryParameterException: could not locate named parameter [propertyValue]
    at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:100)
    at org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:106)

参考文章:http://xiaoyaocao.iteye.com/blog/1837133