Не удалось лениво инициализировать коллекцию ролей - несмотря на наличие lazy = "false" в hbm.xml - PullRequest
0 голосов
/ 03 октября 2019

Даже если у меня есть lazy="false" в UserLimits.hbm.xml Я все еще получаю сообщение об ошибке:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.project.eu.model.UserModel.userLimits, could not initialize proxy - no Session

Разве userLimits не нужно охотно доставать?

Вот некоторые фрагменты кода. Метод, который выбирает пользователей по customerId:

public List<UserModel> getUsersForCustomer(final Long customerId) {
    List<UserModel> users = getHibernateTemplate().execute(
            session -> {
                Criteria criteria = session.createCriteria(UserModel.class);
                criteria.add(Restrictions.eq("customerId", customerId));
                return criteria.list();
            });
    return users;
}

User.hbm.xml

<hibernate-mapping>
    <class name="com.project.eu.model.UserModel" table="USR_USERS" batch-size="20">
        <cache usage="transactional"/>
        <id name="id" type="long">
            <column name="ID" precision="19" scale="0" />
            <generator class="sequence">
                <param name="sequence_name">ID_SEQ</param>
            </generator>
        </id>
        <property name="customerId" type="java.lang.Long">
            <column name="CUSTOMER_ID" precision="19" scale="0" />
        </property>
        <bag name="userLimits" cascade="delete-orphan" >
            <key column="USER_ID" />
            <one-to-many class="com.project.eu.model.UserLimitsModel" />
        </bag>
    </class>
</hibernate-mapping>

UserLimits.hbm.xml

<hibernate-mapping>
    <class name="com.project.eu.model.UserLimitsModel" table="USER_LIMITS" lazy="false">
        <cache usage="transactional"/>
        <id name="id" type="long">
            <column name="ID" precision="19" scale="0" />
            <generator class="sequence">
                <param name="sequence_name">ID_SEQ</param>
            </generator>
        </id>
        <version name="version" type="java.lang.Long" >
            <column name="VERSION" precision="10" scale="0" />
        </version>
        <property name="userId" type="java.lang.Long" >
            <column name="USER_ID" precision="19" scale="0" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

Что может быть не так?

...