ошибка при загрузке данных из таблицы с использованием спящего режима - PullRequest
2 голосов
/ 13 ноября 2010

Я использую Hibernate в качестве инструмента ORM, и при загрузке данных из таблицы я получаю следующую ошибку.

org.hibernate.HibernateException: CGLIB Enhancement failed: com.hotel.entity.HotelUser
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:96)
    at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:49)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:379)
    at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3455)
    at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:257)
    at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:191)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
    at org.hibernate.impl.SessionImpl.load(SessionImpl.java:795)
    at org.hibernate.impl.SessionImpl.load(SessionImpl.java:788)
    at com.hotel.domain.UserLoginService.checkUserCredentials(UserLoginService.java:17)
    at com.hotel.app.UserLoginManager.checkUserCredentials(UserLoginManager.java:12)
    at com.hotel.app.UserLoginManager.main(UserLoginManager.java:23)
Caused by: java.lang.InstantiationException: com.hotel.entity.HotelUser$$EnhancerByCGLIB$$fa712a57
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyInstance(CGLIBLazyInitializer.java:107)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:93)
    ... 12 more

пожалуйста, дайте мне знать, что мне не хватает ...

ниже мой класс

public class HotelUser implements Serializable {

    private static final long serialVersionUID = 1L;
    private String userId;
    private String password;
    private String userName;

    private HotelUser() {

    }
    /**
     * @param userId
     * @param password
     * @param userName
     * @param lastLoginDate
     */
    public HotelUser(String userId, String password, String userName) {
        super();
        this.userId = userId;
        this.password = password;
        this.userName = userName;
    }
    /**
     * @return the userId
     */
    public String getUserId() {
        return userId;
    }
    /**
     * @param userId the userId to set
     */
    public void setUserId(String userId) {
        this.userId = userId;
    }
    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }
    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }
    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }
    /**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

, а файл hbm ниже:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.hotel.entity.HotelUser" table="hotel_user">
        <id name="userId" type="string" column="USER_ID">
        </id>
        <property name="password" type="string" column="PASSWORD" />
        <property name="userName" type="string" column="USER_NAME" />
    </class>
</hibernate-mapping>

Ответы [ 3 ]

9 голосов
/ 13 ноября 2010

Я предполагаю, что у вас нет не приватного конструктора по умолчанию (без аргументов) в вашем классе HotelUser.

См. Этот вопрос для получения более подробной информации .

0 голосов
/ 01 сентября 2013

проверка (по умолчанию) конструктора без аргументов в классе POJO.если нет, вставьте и скомпилируйте снова

0 голосов
/ 13 ноября 2010

Недавно я тоже столкнулся с той же проблемой….

Это было связано с наличием более одной версии файла jar cglib в пути к классам веб-приложения.Хотя я не уверен, что именно этот jar-файл или любой другой jar-файл используется и зависит от hibernate, поскольку у меня также были остальные jar-файлы hibernate в пути к классам в другой версии.

После удаления конфликтующих версий cglib и других jar-файлов все снова заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...