java onetoone_一对一关联查询注解@OneToOne的实例详解

表的关联查询比较复杂,应用的场景很多,本文根据自己的经验解释@OneToOne注解中的属性在项目中的应用。本打算一篇博客把增删改查写在一起,但是在改的时候遇到了一些问题,感觉挺有意思,所以写下第二篇专门讲修改。

一、单向@OneToOne实例详解

假设一个场景,一个人只能领养一只宠物,根据人能够找到宠物,并且查看宠物的信息,关系是单向的。

创建人与宠物的数据表结构。下载地址:Person,Pet数据库建表。

创建实体。

Person.java

package com.my.model;

import java.io.Serializable;

import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.ForeignKey;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.OneToOne;

import javax.persistence.Table;

import org.hibernate.annotations.Cascade;

import org.springframework.beans.factory.annotation.Autowired;

@Entity

@Table(name = "person")

public class Person implements Serializable{

@Id

// id自动生成

@GeneratedValue

@Column(name = "id")

private Long id;

@Column(name = "name")

private String name;

//cascade:表的级联操作

@OneToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL) //JPA注释: 一对一 关系

//referencedColumnName:参考列名,默认的情况下是列表的主键

//nullable=是否可以为空,

//insertable:是否可以插入,

//updatable:是否可以更新

// columnDefinition=列定义,

//foreignKey=外键

@JoinColumn(name="pet_id",referencedColumnName="id",nullable=false)

private Pet pet;

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", pet=" + pet + "]";

}

}

Pet.java

package com.my.model;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name = "pet")

public class Pet implements Serializable{

@I

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值