Один к одному. Частный случай
Ассоцииации по уникальному внешнему ключу (Unique foreign key associations)

Таблица "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)
);
Файл "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