2

休止状態のアプリケーションを実行できません。私は常にこのエラーを受け取ります:

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 is super class for Owner and Renter .
所有者は複数の Flat を持つことができますが、Flat は 1 人の所有者を持つことができます。
Renter は複数の RenterBill を持つことができますが、RenterBill は 1 つの Renter を持つことができます。
賃借人は多くのフラットを持つことができ、フラットは多くの賃借人を持つことができます。

私の 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 クラス: Man.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 */
}

所有者.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 */
}
4

1 に答える 1

2
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」属性を削除してみてください。

アップデート

多対1としてマップされたセットもあります。これは通常、参照されたクラスの単一のインスタンスとして Java POJO に表示されます。そこで 1 対多のタグを使用するつもりだったのかもしれません。

于 2013-02-14T14:08:21.940 に答える