Java 在与Hibernate相关的异常中,“未知实体”是什么意思?

Java 在与Hibernate相关的异常中,“未知实体”是什么意思?,java,hibernate,Java,Hibernate,我是一个Hibernate新手,将一个模块从遗留Java Hibernate项目中分离出来。当抛出异常时,一些未知实体:消息也会打印到错误日志中。从其他相关方面来看,我认为它是可以修复的。然而,我很好奇未知实体的真正含义是什么 错误日志试图说明什么? 它只是告诉我所涉及的实体类是什么吗? 如果我修改配置以包含实体类,错误日志将如何更改 我无法尝试重现该错误,因此无法看到配置更改在再次发生相同异常时会对错误日志产生何种影响 请参见此处的示例异常: [2015 Feb 02 00:15:19.836

我是一个Hibernate新手,将一个模块从遗留Java Hibernate项目中分离出来。当抛出异常时,一些未知实体:消息也会打印到错误日志中。从其他相关方面来看,我认为它是可以修复的。然而,我很好奇未知实体的真正含义是什么

错误日志试图说明什么? 它只是告诉我所涉及的实体类是什么吗? 如果我修改配置以包含实体类,错误日志将如何更改

我无法尝试重现该错误,因此无法看到配置更改在再次发生相同异常时会对错误日志产生何种影响

请参见此处的示例异常:

[2015 Feb 02 00:15:19.836] [Camel (camel) thread #0 - seda://exceptions] ERROR (TradeDAO.java:75) - Unknown entity: myProject.data.util.TradeExceptionObject
[2015 Feb 02 00:15:19.857] [Camel (camel) thread #0 - seda://exceptions] ERROR (TradeExceptionHandler.java:83) - Unknown entity: myProject.data.util.TradeExceptionObject
编辑2 hib.hbm.xml

<hibernate-mapping>
    <class name="myProject.data.Trade" table="TRADE" optimistic-lock="version">
</hibernate-mapping>
TradeDAO.java

package myProject.persistence;

import org.hibernate.*;

public class TradeDAO implements DisposableBean {

    public TradeDAO() {
    }

    public <E> void saveOrUpdate(E obj) throws Exception {
        saveOrUpdate(obj,0);
    }

    private <E> void saveOrUpdate(E obj,int attempt) throws Exception {
        Transaction tx = null;
        Session session = sessionFactory.getCurrentSession();
        try {
            if(obj != null) {
                tx = session.beginTransaction();
                add(obj, session);
                session.getTransaction().commit();
            }
        }
        catch (Exception ex) {
            LOG.error(ex.getMessage());
            throw ex;
        }
    }

    /* Make a query to database using hibernate */
    @SuppressWarnings("unchecked")
    public <E> List<E> get(final  Class<E> clz, 
            Map<? extends String, Object> eqCond){
    }

    private <E> void add(E obj, Session session) {
        session.saveOrUpdate(obj);
        session.flush();
    }   
}

您应该提供所询问的异常的堆栈跟踪。不是https通信失败的堆栈跟踪。@JBNizet https通信失败异常导致此hibernate实体错误。当然,这可能与hibernate无关。但是,我的意思是我无法重现http错误,因此无法重现hibernate实体错误。https错误的异常处理代码导致hibernate错误。您在错误消息中看到的最后两行是我在错误日志中看到的所有与hibernate相关的内容。没有代码和实际异常的堆栈跟踪,很难回答。我猜TradeExceptionObject根本不是一个实体,或者是一个实体,但未在hibernate的配置文件中声明,因此hibernate不认为它是一个实体。@JBNizet我知道实体是什么。如果一个实体在定义上只是一个pojo,那么您可能是对的。请参阅上面更新的代码。实体被注释为@entity。
package myProject.persistence;

import org.hibernate.*;

public class TradeDAO implements DisposableBean {

    public TradeDAO() {
    }

    public <E> void saveOrUpdate(E obj) throws Exception {
        saveOrUpdate(obj,0);
    }

    private <E> void saveOrUpdate(E obj,int attempt) throws Exception {
        Transaction tx = null;
        Session session = sessionFactory.getCurrentSession();
        try {
            if(obj != null) {
                tx = session.beginTransaction();
                add(obj, session);
                session.getTransaction().commit();
            }
        }
        catch (Exception ex) {
            LOG.error(ex.getMessage());
            throw ex;
        }
    }

    /* Make a query to database using hibernate */
    @SuppressWarnings("unchecked")
    public <E> List<E> get(final  Class<E> clz, 
            Map<? extends String, Object> eqCond){
    }

    private <E> void add(E obj, Session session) {
        session.saveOrUpdate(obj);
        session.flush();
    }   
}