0

Spring Data JPA 環境にアップグレードしようとしている従来の Hibernate マネージド ドメインがあります。

従来の Hibernate DAO に対して実行すると、Maven ビルドは成功します。

しかし、JPA エンティティ マネージャーに対して Maven ビルドを実行すると、1 対多のマッピングを使用する 1 つのドメイン クラスで例外が発生します。

ドメインクラスは次のとおりです。

public class LinkCategory implements java.io.Serializable {

    private Integer id;
    private int version;
    private String name;
    private String description;
    private Set<Link> links = new HashSet<Link>();

    public LinkCategory() {
    }

    public Integer getId() {
        return this.id;
    }

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

    public int getVersion() {
        return this.version;
    }

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

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Set<Link> getLinks() {
        return this.links;
    }

    @SuppressWarnings("unused")
    private void setLinks(Set<Link> links) {
        this.links = links;
    }

    public void addLink(Link link) {
        if (link.getLinkCategory() != this) {
            if (link.getLinkCategory() != null) {
                link.getLinkCategory().links.remove(link);
            }
            link.setLinkCategory(this);
            this.links.add(link);
        }
    }

    public void removeLink(Link link) {
        if (link.getLinkCategory().getId() == this.getId() && this.getId() != null) {
            link.setLinkCategory(null);
            this.links.remove(link);
        }
    }

}

Hibernate のマッピングは次のとおりです。

<hibernate-mapping>
    <class name="com.thalasoft.learnintouch.core.domain.LinkCategory" table="link_category" dynamic-insert="true" dynamic-update="true">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native"><param name="sequence">sq_id_link_category</param></generator>
        </id>
        <version name="version" type="int">
            <column name="version" not-null="true" />
        </version>
        <property name="name" type="string">
            <column name="name" length="50" not-null="true" />
        </property>
        <property name="description" type="string">
            <column name="description" not-null="false" />
        </property>
        <set name="links" inverse="true" order-by="list_order" cascade="all">
            <key column="category_id" />
            <one-to-many class="com.thalasoft.learnintouch.core.domain.Link" />
        </set>
    </class>
</hibernate-mapping>

私が得るエラーは次のとおりです。

原因: org.hibernate.MappingException: 次のタイプを特定できませんでした: java.util.Set、テーブル: LinkCategory、列: [org.hibernate.mapping.Column(links)]

Hibernate の私のバージョンは: 3.6.9.Final Hibernate JPA 2 の私のバージョンは: 1.0.1.Final Spring Data JPA の私のバージョンは: 1.3.0.RELEASE

どんな手掛かり ?

敬具、

4

1 に答える 1

0

次のアノテーションを指定することで問題を解決できます。

@OneToMany(mappedBy="linkCategory")
private Collection<Link> links;
于 2013-03-22T06:33:46.623 に答える