gpt4 book ai didi

java - Hibernate 错误 : org. hibernate.InvalidMappingException:无法从资源解析映射文档

转载 作者:搜寻专家 更新时间:2023-11-01 03:40:24 27 4
gpt4 key购买 nike

当我运行该项目时,出现如下异常。在我在 Hibernate 中添加 View 表之前,一切都很好,包括 Blame.hbm.xml 和其他。它可以从数据库中读取数据。异常发生在ShowOrderDaoImpl.java这一句:session=HibernateSessionFactory.getSession();

我的异常(exception)

    org.hibernate.InvalidMappingException: Could not parse mapping document from resource pojo/Blame.hbm.xml
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3415)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3404)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3392)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1341)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
at session.factory.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:75)
at session.factory.HibernateSessionFactory.getSession(HibernateSessionFactory.java:57)
at dao.impl.ShowOrderDaoImpl.queryTradesByBid(ShowOrderDaoImpl.java:24)
at test.testHibernate.main(testHibernate.java:45)
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping pojo.Blame
ok
at org.hibernate.cfg.Configuration$MappingsImpl.addClass(Configuration.java:2580)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:174)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3412)
... 8 more
java.lang.NullPointerException
at dao.impl.ShowOrderDaoImpl.queryTradesByBid(ShowOrderDaoImpl.java:25)
at test.testHibernate.main(testHibernate.java:45)

我的 hibernate.cfg.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/disputesystem</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="pojo/Blame.hbm.xml"/>
<mapping resource="pojo/Buyer.hbm.xml"/>
<mapping resource="pojo/Dispute.hbm.xml"/>
<mapping resource="pojo/Evidence.hbm.xml"/>
<mapping resource="pojo/Goods.hbm.xml"/>
<mapping resource="pojo/Message.hbm.xml"/>
<mapping resource="pojo/Record.hbm.xml"/>
<mapping resource="pojo/Seller.hbm.xml"/>
<mapping resource="pojo/Staff.hbm.xml"/>
<mapping resource="pojo/Trade.hbm.xml"/>
<mapping resource="pojo/Fund.hbm.xml"/>
<mapping resource="pojo/Showorderbybid.hbm.xml"/>
</session-factory>
</hibernate-configuration>

我的 ShowOrderDaoImpl.java 文件

package dao.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import pojo.Showorderbybid;
import session.factory.HibernateSessionFactory;
import dao.intf.ShowOrderDao;

public class ShowOrderDaoImpl implements ShowOrderDao{

@Override
public List<Showorderbybid> queryTradesByBid(String bid) throws Exception {
Session session=null;
Transaction transaction=null;
List<Showorderbybid> orders=new ArrayList<Showorderbybid>();
try {
session=HibernateSessionFactory.getSession();
transaction=session.beginTransaction();
Query query=session.createQuery("from Showorderbybid where bid=?");
query.setParameter(0, bid);
orders=(List<Showorderbybid>)query.list();
List CountView = new ArrayList();
Iterator it = orders.iterator();
while (it.hasNext()) {
Object[] all = (Object[]) it.next();
Showorderbybid countViewId = new Showorderbybid();
countViewId.setAmount((Integer) all[0]);
countViewId.setBid((String) all[1]);
countViewId.setDetail((String) all[2]);
countViewId.setGid((String)all[3]);
countViewId.setGname((String)all[4]);
countViewId.setLogistics((String)all[5]);
countViewId.setSid((String)all[6]);
countViewId.setSname((String)all[7]);
countViewId.setStatus((String)all[8]);
countViewId.setTid((String)all[9]);
countViewId.setTotalmoney((Integer) all[10]);
countViewId.setTradetime((Date)all[11]);
orders.add(countViewId);
}

} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
return orders;
}

}

我的 Blame.hbm.xml 文件

    <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2013-4-19 23:02:05 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="pojo.Blame" table="blame" catalog="disputesystem">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="dispute" class="pojo.Dispute" fetch="select">
<column name="disputeid" length="20" not-null="true" />
</many-to-one>
<property name="blametime" type="timestamp">
<column name="blametime" length="19" not-null="true" />
</property>
<property name="content" type="string">
<column name="content" length="1000" />
</property>
</class>
</hibernate-mapping>

最佳答案

看起来 pojo.Blame 有另一个映射.你可能有一个 copy/paste错误:

<class name="pojo.Blame"

在另一个hbm文件。

这个

Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping pojo.Blame

说明当到达 hbm 时文件中已经有一个名为 pojo.Blame 的类的定义.

在某些文件中看起来像:

<mapping resource="pojo/Blame.hbm.xml"/>
<mapping resource="pojo/Buyer.hbm.xml"/>
<mapping resource="pojo/Dispute.hbm.xml"/>
<mapping resource="pojo/Evidence.hbm.xml"/>
<mapping resource="pojo/Goods.hbm.xml"/>
<mapping resource="pojo/Message.hbm.xml"/>
<mapping resource="pojo/Record.hbm.xml"/>
<mapping resource="pojo/Seller.hbm.xml"/>
<mapping resource="pojo/Staff.hbm.xml"/>
<mapping resource="pojo/Trade.hbm.xml"/>
<mapping resource="pojo/Fund.hbm.xml"/>
<mapping resource="pojo/Showorderbybid.hbm.xml"/>

是错位<class name="pojo.Blame"

关于java - Hibernate 错误 : org. hibernate.InvalidMappingException:无法从资源解析映射文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com