初用hibernate,已经碰到问题,请大家帮帮忙!!!

时间:2022-12-04 07:45:41
小弟刚学hibernate,在做第一个例子的程序的时候就已经出错了,错误提示是:Could not read mappings from resource,找不到一个映射数据库的文件User.hbm.xml,我很确定我放的文件位置没有错,我是将User.hbm.xml和主运行程序和hibernate.cfg.xml放在同一个目录里面的,所以真的不知道为什么找不到该文件?所以请大家帮帮一个初学者啦,谢谢!!!

7 个解决方案

#1


把你的hibernate.cfg.xml帖出来瞧瞧

#2


//是将User.hbm.xml和主运行程序和hibernate.cfg.xml放在同一个目录里面的
错的一塌糊涂.
User.hbm.xml存放的位置应该是User.class所在的目录.


#3


楼上正确

#4


//是将User.hbm.xml和主运行程序和hibernate.cfg.xml放在同一个目录里面的

如果是把pojo也放在这里,很不合理,但是却不应该出错的。

如果你是用IDE进行编辑的,而且你是把.hbm.xml放在和源文件一个目录下(src),

那么你应该进行设置,当编译的时候,需要把.xml文件拷贝到对应的classes目录下。

你检查下,你的classes目录下,是否有这么.hbm.xml。如果没有,手动的考过来,也可以。

#5


就算我把所有的class文件和xml文件放在同一个目录下也是不行,还是出同一个错误!说明一句,我不是用IDE编程的,我用的是JCreator。
以下是我的2个XML文件:
Customer.hbm.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-mapping>  
<class name="sjl.Customer" table="CUSTOMER">
<id name="id" type="string" unsaved-value="null">
<column name="CID" sql-type="char(12)" not-null="true"/>
<generator class="uuid.hex" /> 
</id>      
<property name="username" column="USERNAME" />
<property name="password" column="PASSWORD" /> 
</class>
</hibernate-mapping>

hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/myhi</property>
<property name="show_sql">true</property>
<property name="dialect">hibernate.dialect org.hibernate.dialect.SQLServerDialect</property>

<mapping resource="Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>

#6


初学的话不建议你用了JNDI的数据源,这样会增加调试、配置难度,最好用本地数据源,这个就跟web应用程序没有关系,可以单独调试。
如果放在web应用程序里,你必须把你的类文件放在 /WEB-INF/classes目录里,如果有包就应该有目录结构,hibernate.cfg.xml和Customer.hbm.xml也放在/WEB-INF/classes目录里,不过一般建议Customer.hbm.xml也放在包结构里面,引用的时候必须包括包路径,如你的例子就是sjl/Customer.hbm.xml。

#7


配置文件些错了
hibernate.cfg.xml
<mapping resource="Customer.hbm.xml"/>
应该是
<mapping resource="sjl/Customer.hbm.xml"/>

#1


把你的hibernate.cfg.xml帖出来瞧瞧

#2


//是将User.hbm.xml和主运行程序和hibernate.cfg.xml放在同一个目录里面的
错的一塌糊涂.
User.hbm.xml存放的位置应该是User.class所在的目录.


#3


楼上正确

#4


//是将User.hbm.xml和主运行程序和hibernate.cfg.xml放在同一个目录里面的

如果是把pojo也放在这里,很不合理,但是却不应该出错的。

如果你是用IDE进行编辑的,而且你是把.hbm.xml放在和源文件一个目录下(src),

那么你应该进行设置,当编译的时候,需要把.xml文件拷贝到对应的classes目录下。

你检查下,你的classes目录下,是否有这么.hbm.xml。如果没有,手动的考过来,也可以。

#5


就算我把所有的class文件和xml文件放在同一个目录下也是不行,还是出同一个错误!说明一句,我不是用IDE编程的,我用的是JCreator。
以下是我的2个XML文件:
Customer.hbm.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-mapping>  
<class name="sjl.Customer" table="CUSTOMER">
<id name="id" type="string" unsaved-value="null">
<column name="CID" sql-type="char(12)" not-null="true"/>
<generator class="uuid.hex" /> 
</id>      
<property name="username" column="USERNAME" />
<property name="password" column="PASSWORD" /> 
</class>
</hibernate-mapping>

hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/myhi</property>
<property name="show_sql">true</property>
<property name="dialect">hibernate.dialect org.hibernate.dialect.SQLServerDialect</property>

<mapping resource="Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>

#6


初学的话不建议你用了JNDI的数据源,这样会增加调试、配置难度,最好用本地数据源,这个就跟web应用程序没有关系,可以单独调试。
如果放在web应用程序里,你必须把你的类文件放在 /WEB-INF/classes目录里,如果有包就应该有目录结构,hibernate.cfg.xml和Customer.hbm.xml也放在/WEB-INF/classes目录里,不过一般建议Customer.hbm.xml也放在包结构里面,引用的时候必须包括包路径,如你的例子就是sjl/Customer.hbm.xml。

#7


配置文件些错了
hibernate.cfg.xml
<mapping resource="Customer.hbm.xml"/>
应该是
<mapping resource="sjl/Customer.hbm.xml"/>