гибернация «многие ко многим» с AutoPopulationList привела к исключению PropertyAccessException - PullRequest
1 голос
/ 03 апреля 2011

У меня такая проблема, что всегда возникало исключение PropertyAccessException при попытке сохранитьOrUpdate ();Я использую Spring 3 и Hibernate 3.6 с Tomcat 7.

У меня есть MM Akte для Pemilik

Вот код: (Простые свойства для краткости опущены)

public class Akte implements Serializable, Comparable {
    private Long id;
    private int version;

    AutoPopulatingList pemiliks; 

    public Akte() {
    }


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getVersion() {
        return version;
    }

    public void setVersion(int version) {
        this.version = version;
    }


    public AutoPopulatingList getPemiliks() {
        return pemiliks;
    }

    public void setPemiliks(AutoPopulatingList pemiliks) {
        this.pemiliks = pemiliks;
    }

}

public class Pemilik implements Serializable {
    private Long id;
    private int version;
    private Set aktes = new HashSet();

    public Pemilik() {}

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getVersion() {
        return version;
    }

    public void setVersion(int version) {
        this.version = version;
    }

    public Set getAktes() {
        return aktes;
    }

    public void setAktes(Set aktes) {
        this.aktes = aktes;
    }

}

вот файлы сопоставления

<hibernate-mapping package="com.notaris.beans">

    <class name="Akte" table="AKTE" dynamic-insert="true" dynamic-update="true" lazy="true">


        <id name="id" column="AKTE_ID">

            <generator class="native"/>

        </id>

        <version name="version" column="VERSION"/>

        <bag name="pemiliks" table="AKTE_PEMILIK" lazy="true" cascade="save-update">
           <key column="AKTE_ID"/>
           <many-to-many class="Pemilik" column="PEMILIK_ID"/>
        </bag>


    </class>
</hibernate-mapping>


<hibernate-mapping package="com.notaris.beans">
    <class name="Pemilik" table="PEMILIK" lazy="true">
        <id name="id" column="PEMILIK_ID">
           <generator class="native"/>
        </id>
        <version name="version" column="VERSION"/>
        <set name="aktes" table="AKTE_PEMILIK" lazy="true" inverse="true" cascade="save-update">
            <key column="PEMILIK_ID"/>
            <many-to-many class="Akte" column="AKTE_ID"/>
        </set>
    </class>
</hibernate-mapping>

теперь я пытался сохранить его во время processFinish ()

, выполнив что-то вроде: akteService.createAkte (cmd.getAkte ());Внутри Akte есть AutoPopulationList, содержащий объект Pemilik.и AutoPopulationList инициируется простым способом нового AutoPopulationList (Pemilik.class);

, а здесь - трассировка стека

org.hibernate.PropertyAccessException: возникла исключительная ситуация IllegalArgumentException при вызове установщика com.notaris.beans.Akte.pemiliks org.hibernate.property.BasicPropertyAccessor $ BasicSetter.set (BasicPropertyAccessor.java:128) org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues ​​(AbstractEntityTuplizer.joup.setPropertyValues ​​(PojoEntityTuplizer.java:229) org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues ​​(AbstractEntityPersister.java:3822) org.hibernate.event.def.Abstract.aveEventListener.epEventListener.epEventListener.epevent ()def.AbstractSaveEventListener.performSave (AbstractSaveEventListener.java:203) org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId (AbstractSaveEventListener.java:129) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId (DefaultSaveOrUpdateEventListener.java:210) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient (DefaultSaveOrUpdateEventListener.java:195) org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:117) орг.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:93) org.hibernate.hibernate.impl.SessionImpl.saveOrUpdate (SessionImpl.java:673) org.springframework.orm.hibernate3.HibernateTemplate $ 16.doInHibernate (HibernateTemplate.java:740) org.springframework.orm.hibernate3.jExExlate) org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession (HibernateTemplate.java:374) org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate (HibernateTemplate.java:737) com.notaris.dao.AkteDaoImpl.createAkte (AkteDaoImpl.java:26) com.notaris.service.AkteService.createAkte (AkteSerddk.processFinish (AddAkteController.java:228) org.springframework.web.servlet.mvc.AbstractWizardFormController.validatePagesAndFinish (AbstractWizardFormController.java:650) org.springframework.web.servizardormont.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal (AbstractFormController.java:268) org.springframework.web.servlet.mvc.AbstractController.handleRequest (AbstractController.java:153.handle (SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService (Диспетчерrvlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:644) org.springframework.web.servlet.сервис (HttpServlet.java:641)javax.servlet.http.HttpServlet.service (HttpServlet.java:722)

Есть идеи, ребята? Я посмотрел на свойство pemiliks, это просто AutoPopulationList, я не понять, в чем проблема с сеттером, который не может получить к нему доступ? Спасибо.

1 Ответ

1 голос
/ 04 апреля 2011

Тип коллекции, которой должен управлять hibernate, должен быть java.util.Set или List.Ошибка, скорее всего, из-за того, что pemiliks имеет тип AutoPopulationList, измените его на List (также setter & getter).Вы можете инициализировать коллекцию экземпляром AutoPopulationList.

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