Hibernate, many-to-one not-found="ignore", Criteria add Restrictions, list,- could not resolve property

50 Views Asked by At

My table has links pointing to non-existent records. To extract an object with a broken link, I used not-found="ignore":

    <class name="pattern" table="PATTERN">
        <id name="un" type="long">
            <column name="UN" precision="10" scale="0" />
            <generator class="native"/>
        </id>
        <many-to-one class="Workplace" fetch="select" lazy="false" name="workplace" not-found="ignore">
            <column name="UN" not-null="true"/>
        </many-to-one>
    ...
    </class>

    <class name="Workplace" table="WORKPLACE">
        <id name="un" type="long">
            <column name="UN" precision="10" scale="0" />
            <generator class="assigned"/>
        </id>
    ...
    </class>
   

Objects were successfully received. But searching for the workplace.un field gave an error:

Criteria crit;
...
crit.add(Restrictions.eq("workplace.un", un));
crit.list();

Error:

could not resolve property: workplace.un of: pattern
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:285)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:230)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
    at 

Is it possible to fix the search?

If remove not-found="ignore", search works, but it fails to retrieve objects with a broken link.

0

There are 0 best solutions below