一对一双向外键关联:
单向双向针对在java程序中。
一个健康档案HealthFile 对应一个学生DictStudent ,一个学生对应一个健康档案。两边都存在引用,健康档案作为主导, 则在主导表中生成字段,student表中没有引用字段。
凡是双向关联
@Entity
@Table(name = "health_file")
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "health_file_sequence")
public class HealthFile extends BaseEntity
{
/** 隶属学生 */
private DictStudent dictStudent;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(nullable = false)
public DictStudent getDictStudent()
{
return dictStudent;
}
public void setDictStudent(DictStudent dictStudent)
{
this.dictStudent = dictStudent;
}
}
@Entity
@Table(name = "student")
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "student_sequence")
public class DictStudent extends BaseEntity
{
/**健康档案*/
private HealthFile healthFile;
@OneToOne(mappedBy = "dictStudent", fetch = FetchType.LAZY)
@JoinColumn(name = "dictStudent")
public HealthFile getHealthFile()
{
return healthFile;
}
public void setHealthFile(HealthFile healthFile)
{
this.healthFile = healthFile;
}
}
health_file表:
组件映射:
一个组件作为另个组件的一部分。
@Entity
@Table(name = "member")
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "member_sequence")
public class Member extends BaseEntity
{
/** 安全密匙 */
private SafeKey safeKey;
/**
* 获取安全密匙
*/
@Embedded
public SafeKey getSafeKey()
{
return safeKey;
}
/**
* 设置安全密匙
*/
public void setSafeKey(SafeKey safeKey)
{
this.safeKey = safeKey;
}
}
/**
* Entity - 安全密钥
*/
@Embeddable
public class SafeKey implements Serializable
{
private static final long serialVersionUID = -8536541568286987548L;
/** 密钥 */
private String value;
/** 到期时间 */
private Date expire;
//省略get set
}