Проблема спящего режима при отображении подкласса - создание экземпляра tuplizer по умолчанию - PullRequest
0 голосов
/ 30 мая 2018

У меня есть класс User и класс сотрудника, в котором расширяется класс сотрудника и класс User.Кроме того, у меня есть класс адресов, который является отношением HAS-A к обоим классам.Ниже приведены классы реализации и ошибки.Я получаю сообщение об ошибке.

Модель пользователя

  public class User {
    private int userid;
    private String username;
    private String password;
    private Date dob;
    private String gender;
    private Set<Address> addresses;
//getter and setters
}

Модель сотрудника

public class Employee extends User {
    private Date joindate;
    private String role;
    private Branch branch;
//getter and setters
}

АдресМодель

public class Address {
    private String email;
    private String mobile;
    private String street;
    private String city;
    private String state;
    private String country;
    private String pin;
//getter & setters
}

users.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.alok.mypro.model.usermodel.User" table="myuser" schema="mydb">
        <id name="userid">
            <generator class="increment" />
        </id>
        <property name="username" />
        <property name="password" />
        <property name="dob" />
        <property name="gender" />
        <set name="addresses" cascade="all">
            <key column="userid" />
            <one-to-many class="com.alok.mypro.model.usermodel.Address" />
        </set>

        <joined-subclass name="com.alok.mypro.model.usermodel.Employee" table="employee">
            <key column="userid" />
            <property name="joindate" />
            <property name="role" />
            <many-to-one name="branch" class="com.alok.mypro.model.places.Branch"/>
        </joined-subclass>

    </class>
</hibernate-mapping>

address.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.alok.mypro.model.usermodel.Address" table="address"
        schema="myuser">

        <id name="email" />
        <property name="mobile" />
        <property name="street" />
        <property name="city" />
        <property name="state" />
        <property name="country" />
        <property name="pin" />
    </class>
</hibernate-mapping>

Исключение при сборке


Исключение в потоке "main" org.hibernate.HibernateException: Невозможно создать экземпляр tuplizer по умолчанию [org.hibernate.tuple.entity.PojoEntityTuplizer] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer (EntityTuplizerFactory.java:108) в org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplityTactityTactityTactityTactityTextEBT. (EntityEntityModeToTuplizerMapping.java:80) в org.hibernate.tuple.entity.EntityMetamodel. (EntityMetamodel.java:322) в org.hibernate.persister.entity.AbstractEntityPersister. (AbstractEntityPpersister.jiberj.jj)..entity.JoinedSubclassEntityPersister. (JoinedSubclassEntityPersister.java:126) в org.hibernate.persister.PersisterFactory.createClassPersister (PersisterFactory.java:87) в org.hibernate.impl.SessionFactoryImpl. (SessionFactorygg.hiber.jpg) .jj.jl..buildSessionFactory (Configuration.java:1872) в Test.main (Test.java:7)

Вызывается: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) на sun.reflect.tuple.entity.EntityTuplizerFactory.constructTuplizer (EntityTuplizerFactory.java:105)

Причина: org.hibernate.PropertyNotFoundException: Не удалось найти получатель для адресов в классе com.alok.mypro.modelEloy.usermodel.org.hibernate.property.BasicPropertyAccessor.createGetter (BasicPropertyAccessor.java:326) в org.hibernate.property.BasicPropertyAccessor.getGetter (BasicPropertyAccessor.java:320) в org.hibernate.mapping.Property.getava44 (orget).hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter (PojoEntityTuplizer.java:297) при org.hibernate.tuple.entity.AbstractEntityTuplizer. (AbstractEntityTuplizer.java:155) при org.hibernate.tuple.entity.PojoEntityTuplizer. (PojoEntityTuplizer.java: 77) ... еще 14

1 Ответ

0 голосов
/ 31 мая 2018

Ошибка связана с отсутствующим свойством getter.

Вы должны добавить следующий код в класс Address

public Set<Address> getAddresses() {
        return addresses;
    }

, кроме того, проверьте, есть ли у вас также свойство setter.

private void setAddresses(Set<Address> addresses) {
    this.addresses = addresses;
}

Hibernate в основном нуждается в свойствах getter и setter для атрибутов, которые должны быть сохранены, как описано https://docs.jboss.org/hibernate/orm/5.0/mappingGuide/en-US/html/ch02.html#domainmodel-pojo-accessors.

Вы должны сделать установщик частным, чтобы обеспечить инкапсуляцию данныхваш класс во время перемен.

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