java - 解析 Hibernate Man.hbm.xml 时出错

标签 java hibernate

我无法运行我的 hibernate 应用程序。我不断收到此错误:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/MAG/.m2/repository/org/slf4j/slf4j-jdk14/1.7.2/slf4j-jdk14-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/MAG/.m2/repository/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]
2013-02-14 14:49:05 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.3.0.SP1
2013-02-14 14:49:05 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
2013-02-14 14:49:05 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
2013-02-14 14:49:05 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
2013-02-14 14:49:05 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
2013-02-14 14:49:05 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
2013-02-14 14:49:05 org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : model/man/Man.hbm.xml
2013-02-14 14:49:06 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(25) Attribute "name" must be declared for element type "many-to-many".
2013-02-14 14:49:06 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(33) Attribute "name" must be declared for element type "many-to-many".
2013-02-14 14:49:06 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(38) The content of element type "set" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)".

我的程序的想法是: Man所有者承租人的 super 类。
业主可以拥有许多单位,但单位可以有一个业主。
承租人可以拥有多个 RenterBill,但 RenterBill 可以拥有一个承租人。
租客可以拥有许多公寓,公寓也可以有许多租客。

我的Man.hbm.xml:

<class name="Man" table="MEN">
    <id name="id" column="MAN_ID">
        <generator class="native" />
    </id>
    <property name="pesel" column="MAN_PESEL" />
    <property name="idNumber" column="MAN_ID_NUMBER" />
    <property name="email" column="MAN_EMAIL" />
    <property name="name" column="MAN_NAME" />
    <property name="surname" column="MAN_SURNAME" />
    <property name="telephoneNumber" column="MAN_TELEPHONE_NUMBER" />
    <many-to-one name="address" column="ADDRESS_ID" not-null="true" />

    <joined-subclass name="Owner" table="OWNERS">
        <key column="MAN_ID" />
        <property name="password" column="OWNER_PASSWORD" not-null="true" />
        <property name="seed" column="OWNER_SEED" not-null="true" />
        <set name="flats" table="OWNER_FLATS">
            <key column="MAN_ID" />
            <many-to-many name="flats" column="FLAT_ID" class="Flat" />
        </set>
    </joined-subclass>

    <joined-subclass name="Renter" table="RENTERS">
        <key column="MAN_ID" />
        <set name="flats" table="RENTER_FLATS">
            <key column="MAN_ID" />
            <many-to-many name="flats" column="FLAT_ID" class="Flat" />
        </set>
        <set name="bills" table="RENTER_BILLS">
            <key column="MAN_ID" />
            <many-to-one name="bills" column="RENTER_BILL_ID" class="RenterBill" />
        </set>
    </joined-subclass>
</class>

Java 类: 人.java

package model.man;
import model.addresses.Address;
public abstract class Man {

    private int id;
    private String pesel;
    private String idNumber;
    private String email;
    private String name;
    private String surname;
    private String telephoneNumber;
    private Address address;

       /* getters setters */
}

Owner.java

package model.man;

import java.util.Iterator;
import java.util.Set;

import model.flat.Flat;

public class Owner extends Man implements Iterable<Flat> {

    private String password;
    private String seed;
    private Set<Flat> flats;

    /* getters setters */
}

Renter.java

package model.man;

import java.util.HashSet;
import java.util.Set;

import model.bills.RenterBill;
import model.flat.Flat;

public class Renter extends Man {

    private Set<Flat> flats = new HashSet<Flat>();
    private Set<RenterBill> bills = new HashSet<RenterBill>();

                /* getters setters */
}

最佳答案

SEVERE: Error parsing XML: XML InputStream(25) Attribute "name" must be declared for element type "many-to-many".
2013-02-14 14:49:06 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(33) Attribute "name" must be declared for element type "many-to-many".
2013-02-14 14:49:06 org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(38) The content of element type "set" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)".

尝试从多对多标记中删除“name”属性。

更新

您还有一个映射为多对一的集合。这通常在 Java POJO 中显示为引用类的单个实例。您可能打算在那里使用一对多标签。

关于java - 解析 Hibernate Man.hbm.xml 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14876506/

相关文章:

java - 我想读取一个 Excel 文件并将数据上传到 PostgresDB 中的一个表中

hibernate - hibernate 标准中的count(*)?

Hibernate 3.0 + 缺少 ElementCollection 类

java - Spring JPA 存储库方法在查询后不设置实体的值

java - 锁屏而不关闭

java - 如何在远程tomcat服务器上使用依赖库部署war

java - 在 Java 中创建多种数据类型

java - 在 Java 中在用户的 PATH 上执行程序

java - 尝试连接用户时出现 Hibernate 异常 - 字段 'username' 没有默认值

java - Hibernate二级缓存并不是在所有情况下都使用