Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate问题到while子类映射-实例化默认元组化器_Java_Xml_Hibernate_Hibernate Mapping - Fatal编程技术网

Java Hibernate问题到while子类映射-实例化默认元组化器

Java Hibernate问题到while子类映射-实例化默认元组化器,java,xml,hibernate,hibernate-mapping,Java,Xml,Hibernate,Hibernate Mapping,我有一个User类和employee类,其中employee类扩展了User类。另外,我还有一个address类,它与这两个类都有关系。下面是实现类和错误。我得到了错误 用户模型 public class User { private int userid; private String username; private String password; private Date dob; private String gender; pri

我有一个User类和employee类,其中employee类扩展了User类。另外,我还有一个address类,它与这两个类都有关系。下面是实现类和错误。我得到了错误

用户模型

  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
}
<!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>
<!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>
地址模型

  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
}
<!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>
<!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>
users.hbm.xml

  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
}
<!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>
<!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>

address.hbm.xml

  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
}
<!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>
<!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] 位于org.hibernate.tuple.entity.EntityTuplizerFactory.ConstructionTuplizer(EntityTuplizerFactory.java:108) 位于org.hibernate.tuple.entity.EntityTuplizerFactory.ConstructionDefaultTuplizer(EntityTuplizerFactory.java:133) 位于org.hibernate.tuple.entity.EntityModelToUplizerMapping。(EntityEntityModelToUplizerMapping.java:80) 位于org.hibernate.tuple.entity.EntityMetamodel。(EntityMetamodel.java:322) 位于org.hibernate.persister.entity.AbstractEntityPersister。(AbstractEntityPersister.java:485) 位于org.hibernate.persister.entity.JoinedSubassentitypersister.(joinedSubassentitypersister.java:126) 位于org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:87) 位于org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:286) 位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872) at Test.main(Test.java:7)

原因:java.lang.reflect.InvocationTargetException 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 位于java.lang.reflect.Constructor.newInstance(Constructor.java:423) 位于org.hibernate.tuple.entity.EntityTuplizerFactory.ConstructionTuplizer(EntityTuplizerFactory.java:105)

原因:org.hibernate.PropertyNotFoundException:在com.alok.mypro.model.usermodel.Employee类中找不到地址的getter 位于org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:326) 位于org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:320) 位于org.hibernate.mapping.Property.getGetter(Property.java:304) 位于org.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多


错误是由于缺少getter属性造成的

private void setAddresses(Set<Address> addresses) {
    this.addresses = addresses;
}
您应该向Address类添加以下代码

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


您应该将setter设置为私有,以便在更改期间强制对类进行数据封装。

getter和setter都在那里。然而,地址的Getter和Setter将在用户模型中显示,但问题将显示在雇员模型中。{原因:org.hibernate.PropertyNotFoundException:在类com.alok.mypro.model.usermodel.Employee中找不到地址的getter}我无法重现此问题。你能分享你的Hibernate配置文件吗?