Один к одному. Частный случай

Ассоцииации по уникальному внешнему ключу (Unique foreign key associations)

one-to-one-particular-case

Таблица "post":

create table hibernate.post (
    id integer not null auto_increment,
    content longtext not null,
    primary key(id)
);

Таблица "metadata":

create table hibernate.metadata (
    id integer not null auto_increment,
    content longtext not null,
    post_id integer,
    primary key(id),
    unique key(post_id)
);

one-to-one-particular-case-uml

Файл "Post.java"

package de.inger;

import java.util.Set;

public class Post {
    private Integer id;
    private String content;
    private Set<Metadata> metadata;

    public Post() {
    }

    public Post(String content) {
        setContent(content);
    }

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

    public Integer getId() {
        return id;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getContent() {
        return content;
    }

    public void setMetadata(Set<Metadata> metadata) {
        this.metadata = metadata;
    }

    public Set<Metadata> getMetadata() {
        return metadata;
    }
}

Файл "Metadata.java"

package de.inger;

public class Metadata {

    private Integer id;
    private String content;
    private Post post;

    public Metadata() {
    }

    public Metadata(String content) {
        setContent(content);
    }

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

    public Integer getId() {
        return id;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getContent() {
        return content;
    }

    public void setPost(Post post) {
        this.post = post;
    }

    public Post getPost() {
        return post;
    }       
}

Файл "mapping.hbm.xml":

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="de.inger.Post" table="post">
        <id name="id" type="integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="content" type="text">
            <column name="content" />
        </property>
        <set name="metadata" cascade="all">
            <key column="post_id" />
            <one-to-many class="de.inger.Metadata" />
        </set>
    </class>
    <class name="de.inger.Metadata" table="metadata">
        <id name="id" type="integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="content" type="text">
            <column name="content" />
        </property>
        <many-to-one name="post" unique="true">
            <column name="post_id" />
        </many-to-one>
    </class>
</hibernate-mapping>

No TrackBacks

TrackBack URL: http://igor-inger.de/mt/mt-tb.cgi/3595

Leave a comment

About this Archive

Find recent content on the main index or look in the archives to find all content.