Hibernate注解配置1:1关联
2012-07-03 19:35
519 查看
一对一
使用 @OneToOne 注解可以建立实体Bean之间的一对一关系。一对一关系有3种情况。
• 关联的实体都共享同样的主键。
@Entity
public class Body {
@Id
public Long getId() { return id; }
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public Heart getHeart() {
return heart;
}
...
}
@Entity
public class Heart {
@Id
public Long getId() { ...}
}
通过@PrimaryKeyJoinColumn 注解定义了一对一的关联关系。
• 其中一个实体通过外键关联到另一个实体的主键。注:一对一,则外键必须为唯一约束。
@Entity
public class Customer implements Serializable {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="passport_fk")
public Passport getPassport() {
...
}
@Entity
public class Passport implements Serializable {
@OneToOne(mappedBy = "passport")
public Customer getOwner() {
...
}
通过@JoinColumn注解定义一对一的关联关系。如果没有@JoinColumn注解,则系统自动处理,在主表中将创建连接列,列名为:主题的关联属性名 + 下划线 + 被关联端的主键列名。上例为 passport_id, 因为Customer 中关联属性为 passport, Passport 的主键为 id.
• 通过关联表来保存两个实体之间的关联关系。注:一对一,则关联表每个外键都必须是唯一约束。
@Entity
public class Customer implements Serializable {
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "CustomerPassports",
joinColumns = @JoinColumn(name="customer_fk"),
inverseJoinColumns = @JoinColumn(name="passport_fk")
)
public Passport getPassport() {
...
}
@Entity public class Passport implements Serializable {
@OneToOne(mappedBy = "passport")
public Customer getOwner() {
...
}
Customer 通过 CustomerPassports 关联表和 Passport 关联。该关联表通过 passport_fk 外键指向 Passport 表,该信心定义为 inverseJoinColumns 的属性值。 通过 customer_fk 外键指向 Customer 表,该信息定义为 joinColumns 属性值。
使用 @OneToOne 注解可以建立实体Bean之间的一对一关系。一对一关系有3种情况。
• 关联的实体都共享同样的主键。
@Entity
public class Body {
@Id
public Long getId() { return id; }
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public Heart getHeart() {
return heart;
}
...
}
@Entity
public class Heart {
@Id
public Long getId() { ...}
}
通过@PrimaryKeyJoinColumn 注解定义了一对一的关联关系。
• 其中一个实体通过外键关联到另一个实体的主键。注:一对一,则外键必须为唯一约束。
@Entity
public class Customer implements Serializable {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="passport_fk")
public Passport getPassport() {
...
}
@Entity
public class Passport implements Serializable {
@OneToOne(mappedBy = "passport")
public Customer getOwner() {
...
}
通过@JoinColumn注解定义一对一的关联关系。如果没有@JoinColumn注解,则系统自动处理,在主表中将创建连接列,列名为:主题的关联属性名 + 下划线 + 被关联端的主键列名。上例为 passport_id, 因为Customer 中关联属性为 passport, Passport 的主键为 id.
• 通过关联表来保存两个实体之间的关联关系。注:一对一,则关联表每个外键都必须是唯一约束。
@Entity
public class Customer implements Serializable {
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "CustomerPassports",
joinColumns = @JoinColumn(name="customer_fk"),
inverseJoinColumns = @JoinColumn(name="passport_fk")
)
public Passport getPassport() {
...
}
@Entity public class Passport implements Serializable {
@OneToOne(mappedBy = "passport")
public Customer getOwner() {
...
}
Customer 通过 CustomerPassports 关联表和 Passport 关联。该关联表通过 passport_fk 外键指向 Passport 表,该信心定义为 inverseJoinColumns 的属性值。 通过 customer_fk 外键指向 Customer 表,该信息定义为 joinColumns 属性值。
相关文章推荐
- Hibernate中用注解配置一对多双向关联和多对一单向关联
- hibernate关联非主键注解配置
- hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询
- Hibernate中用注解配置一对多双向关联和多对一单向关联
- hibernate注解配置关联
- Hibernate中用注解配置一对多双向关联和多对一单向关联
- Hibernate5:Hibernate框架下的基于注解配置的多表关联的入门级例子(完整版)
- Hibernate注解配置1:N关联
- Hibernate注解配置N:N关联
- [转] hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询
- hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询
- Hibernate一对一主键关联(基于annotation注解方式)
- Hibernate @Entity注解配置说明
- spring+hibernate xml和注解方式配置事务
- springMVC+hibernate+jdbc+mybatis整合 支持全注解方式 支持全配置方式
- hibernate用注解(annotation)配置sequence
- Spring2.5.6+Struts2+Hibernate3.6.7+DWR3.0 注解(Annotation)式配置
- Spring MVC注解配置结合Hibernate的入门教程及其代码实例
- Hibernate一对一关联映射(注解)
- hibernate注解配置