EJB学习日记(9)

实体BEAN的七种关系之---------一对一双向
One-to-One Bidirectional Relationship

一对一双向的情况其实在现实生活中也是挺常见的,最常见的就是人和身份证的关系了,我们每个人都有一个身份证(只要你年满16岁,并且申请了),并且每个身份证都对应一个人,我们可以根据一个人查到他的身份证号码,也可以根据一个身份证号码查到一个人的具体情况,(第一代身份证重码的情况还是有的:(   ) .好了,闲话不多说,还是看看代码吧.

先定义一个Person类

/*
 * Person.java
 * 
 * Created on 2007-9-15, 0:11:58
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/

package lbf.entitybean.test1;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

/**
 *
 * 
@author Admin
 
*/
@Entity
public class Person implements Serializable {
    
private IDCard idCard;
    
private static final long serialVersionUID = 1L;
    
private Long id;
    
private String name;
    
private String sex;
    
private int age;
    
private Address address;
    
    @OneToOne(cascade
=CascadeType.ALL,optional=true)
    
public Address getAddress() {
        
return address;
    }

    
public void setAddress(Address address) {
        
this.address = address;
    }
    
public int getAge() {
        
return age;
    }

    
public void setAge(int age) {
        
this.age = age;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
public String getSex() {
        
return sex;
    }

    
public void setSex(String sex) {
        
this.sex = sex;
    }
    
public void setId(Long id) {
        
this.id = id;
    }

    @Id
    @GeneratedValue(strategy 
= GenerationType.AUTO)
    
public Long getId() {
        
return id;
    }

    @OneToOne(cascade
={CascadeType.ALL},optional=true)
    
public IDCard getIdCard() {
        
return idCard;
    }

    
public void setIdCard(IDCard iDCard) {
        
this.idCard = iDCard;
    }


}


IDCard类

/*
 * IDCard.java
 * 
 * Created on 2007-9-18, 17:05:51
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 
*/

package lbf.entitybean.test1;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;

/**
 *
 * 
@author hadeslee
 
*/
@Entity
public class IDCard implements Serializable {
    
private static final long serialVersionUID = 1L;
    
private Long id;
    
private Person person;
    
private String cardNumber;
    
public String getCardNumber() {
        
return cardNumber;
    }

    
public void setCardNumber(String cardNumber) {
        
this.cardNumber = cardNumber;
    }
    @OneToOne(cascade
=CascadeType.ALL,mappedBy="idCard",optional=false)
    
public Person getPerson() {
        
return person;
    }

    
public void setPerson(Person person) {
        
this.person = person;
    }
    
public void setId(Long id) {
        
this.id = id;
    }
    @Id
    @GeneratedValue(strategy 
= GenerationType.AUTO)
    
public Long getId() {
        
return id;
    }
    

}

在这里我们可以看到一对一单向和一对一双向其实差别也不是很大,无非就是在对方的类里面也定义了一个自己,这样就互相都能找到对方了,在数据表的表现来看,和一对一单向是一模一样的,都是从Person表里面起一个外键连到IDCard的主键.但是只有这种方法吗?

在Person类里面,定义的IDCard注释是和Address一样的,可是我们在IDCard里面定义的注释却和Person里面的不一样:

@OneToOne(cascade=CascadeType.ALL,mappedBy="idCard",optional=false)
    public Person getPerson() {
        return person;
    }
多了一个mappedBy这个方法,它表示什么呢?它表示此表和Person的关系是定义在Person里面的idCard这个成员上面的,它表示此表是一对一关系中的从表,也就是关系是在person表里面维护的,这一点很重要.

我们也可以让主导权在IDCard上面,也就是让它产生一个指向Person的外键,这也是可以的,但是最好是让 Person来维护整个关系,这样更符合我们正常的思维.

我们也可以看到在Person里面IDCard是注释是optional=true,也就是说一个人是可以没有身份证的,但是一个身份证不可以没有人,所以在IDCard里面注释person的时候,optional就为false了,这样就可以防止一个空的身份证记录进数据库.
基于STM32电压检测和电流检测 1.可测量直流电压0~36V,适用于低电压电子电路中。 2.可测量直流电0~5A范围内,目前采用的ACS712测量量程为5A,该模块有多个量程,可测量到20A 3.实时功率监测 4.电池电量监测(采用电压压降方式计算) 阅读详情

相关推荐

Android音频学习(十四)——加载音频设备

loadHwModule 是 Android 音频系统的核心初始化函数,负责加载音频硬件抽象层(HAL)的模块实现。它建立 AudioPolicyService 与底层硬件的桥梁,将配置文件(audio_policy_config.xml)中的标签<module>定义转化为可操作的硬件对象,加载的是音频硬件模块(HAL实现),每个模块对应一种音频设备类型,以动态库的形式存在,负责与底层音频硬件交互。

miemie2014的博客 1732

EJB初学日记(1)

2007年10月10日 07:40:00 今天终于还是下定决心看看EJB,看着SPRING看了两天,觉得一点头绪都没有,我不是一个讲究速成的人,但是总是感觉和它们的理念不太一样,唉,真可怜,都怪自己,初学JAVA的时候就把J2SE看得太重了.在学习了J2SE一整年之后,发现JAVA的应用还远远没有掌握,我学习一年的结果就是刚刚对JAVA有所了解而已,回首这一年的路,挺艰难的,但 是现在以一

秦梦瑶的专栏 444

从零到一:QT for OpenHarmony 开发环境实战搭建与踩坑指南

本文是一份详尽的QT for OpenHarmony开发环境搭建实战指南。文章手把手教你如何在Windows和macOS系统上,从环境准备、核心工具(DevEco Studio与社区版QT SDK)安装配置,到创建首个QT Quick项目、解决构建部署中的常见问题,最终实现应用在OpenHarmony设备上运行。内容涵盖关键配置修改、资源管理及深度踩坑经验,旨在帮助开发者高效开启跨平台开发之旅。

weixin_29190573的博客 326

jboss-seam(jsf+ejb3)学习日记1

 昨天晚上把jboss-seam体验了下,感觉还可以,很简单,很容易实现,几乎把EJB3.0+jsf(myfaces)傻瓜化,这里把过程记录下.先下载eclipse+jboss IDE2+JBOSS AS我的版本分别是:JBossIDE-2.0.0.ALPHA-ALL.zipeclipse-SDK-3.2-win32.zipjboss-4.0.4.GA-Patch1-ins

lzlr1324的专栏 1854

Qi标准无线充学习笔记

负载调制主要通过接收端向后散射调制计数使得功率信号改变,两者通过线圈的电压和电流的变化量来传输信号。下面是要求稳定电流的变化量不得超出8ma,判断稳定的时间至少要在150us稳定电压的变化量不得超出110mv,判断稳定的时间至少要在150us高低电流变化量至少需要15mA,判断稳定的时间至少要在100us,主线圈电流采样的时间是在半桥转换的1/4周期刻测量的高低电压变化量至少需要200mV,判断稳定的时间至少要在100us。

m0_73991989的博客 1011

大一Python之循环解决实际问题

pythin之循环解决实际问题

weixin_66263546的博客 2288

9.21学习日记

git 组件与中间件 Docker springcloud基础

qq_66256116的博客 3028

强化学习赋能宇树机器狗:Isaac Gym与MuJoCo仿真训练全解析

本文详细解析了如何利用Isaac Gym和MuJoCo两大仿真平台为宇树机器狗构建强化学习训练管道。内容涵盖环境配置、模型导入、PPO算法框架设计、奖励函数构建以及从仿真到实机的策略迁移技巧,为开发者提供了一套完整的宇树狗仿真训练实践方案。

zeta9的博客 621

EJB异常日记

er.java:134)@Remote和@Local必须指定接口的class,也就是value值例如:@Remote(HelloWorld.class)  //申明是一个远程接口,不写默认是本地接口@Local(HelloWorldLocal.class)  //申明是一个本地接口Exception in thread "main" javax.ejb.EJBException: Invalid (i.e. remote) invocation of local interface (n

computerstep 159

智能车图像处理11-进阶篇3--中线累积差值的统计

中线累积差值的统计在后面判断小S,以及长直道的时候都有用到,关键点在于中线的跳变 第12 - 13 行:comulants1 和comlants2代表的是两种不同的累差,取的行数不同 第14-17 行:comulants2取6到25行,其实就是My_Abs(LCenter[i], LCenter[i - 1])的累加 第18-21 行:comulants1去第1到40行 第27- 行: 计算了一下右线的开始于最终结束行,这里判断R_black是否为0,是和中线的提取中g

taiyuezyh的博客 3827

91、Windows网络配置:动态更新与名称解析全攻略

本文全面解析了Windows XP Professional系统中的网络配置方法,重点介绍了动态更新和名称解析两大核心功能。动态更新部分涵盖DHCP客户端、静态配置客户端、远程访问客户端和多宿主客户端的配置方法,并提供禁用动态更新和编辑Hosts文件的注意事项。名称解析部分详细讲解了NetBIOS名称解析的基础知识、WINS配置方法、B节点广播与Lmhosts文件的使用,以及WINS代理的作用和配置要点。通过操作建议流程图和关键操作步骤回顾,帮助用户快速掌握网络配置的核心技巧,适用于不同网络环境的实际需求。

blue42的博客 234

EJB初学日记(3)

2007年10月10日 07:10:00 今天主要是看了一下拦截器的实现,在EJB3.0里面,实现拦截非常简单.加一个注释就可以了,这样就可以随时监视某个方法的调用了,拦截器可以是拦截某一个方法也可以是拦截一个类的所有方法的.具体如下 首先写一个拦截器方法,拦截器方法并不需要实现什么接口,只要符合一定的规范就可以了,规范是: Object xxxxx(InvocationContext

秦梦瑶的专栏 339

基于STM32L4XX、HAL库的AD7124模数转换器ADC驱动程序设计

/ 检查ID是否正确 (AD7124-4/AD7124-8有不同的ID)// 转换为电压值 (假设使用内部2.5V基准)// 构造读命令: 1(R/W) + 1(0) + 6(寄存器地址)// 构造写命令: 0(R/W) + 1(0) + 6(寄存器地址).config = 0, // 使用配置0。内置可编程增益放大器(PGA):1-128倍。// 读取ADC数据。// 读取当前ADC控制寄存器。// 检查数据是否就绪。// 写回ADC控制寄存器。// 初始化AD7124。

zhusl6688的博客 520

EJB初学日记(2)

其实在学习EJB之前,就听说过EJB,有人说他很复杂,也有人说一般般而已,但是几乎所有的人都说EJB3.0确实是简单了许多. 一般讲起JAVA EE,一般人都认为是应用在网页里面的,甚至有人把JAVA EE和JSP等同起来,要知道,JAVA EE是一个很庞大的结构,而JSP只是里面一部份中的一部份而已. 今天我就把JAVA EE的EJB应用到JAVA SE中看一看,在JBOSS里面布署好EJB,...

千里冰封 145

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

EJB初学日记(4)

2007年10月10日 07:09:00 关于session bean的一些问题 EJB里面,session bean是占了挺重要的地位的,一些重要的事情都是交给session bean来处理的session BEAN一般用于操作一些对外的方法,供客户调用.会话BEAN分两种,一种 是有状态的会话BEAN,一种 是无状态的会话BEAN,它们有什么不同呢?有状态的会话BEAN,会记录每一个调

秦梦瑶的专栏 469

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

EJB学习日记(20)

2007年10月12日 01:06:00 非实体的基类映射最近我们都说了很多继承方面的映射策略,可是有时候我们却需要继承一个非实体的类,这个类存在于我们的工程项目中,但是我们又不希望它成为一个实体类,这个时候怎么办呢?这个时候我们可以用@javax.persistence.MappedSuperclass来注释它,我们现在就修改一下我们前几天的例子,把Person类定义成一个不持久化的类。

秦梦瑶的专栏 510

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

abp学习日记 初记

文章目录ABP本系列学习日志对ABP的认识DDD推荐一个文章 ABP 学习abp的最好的网站(官网) 本系列学习日志 构建中 对ABP的认识 最开始是在博客园中看到有个博友写了一个套类库,提到了这个词 abp,查了一下当时理解的就是一套别人写好的基础操作的框架,做点反射啊,基类抽象啊,没啥了不起的,嗤之以鼻,开始了自己的框架编写,当时还是用的老三层 DAL,BLL,API(也有用UI的),后来了解...

iml6yu的博客 393

EJB学习日记(18)

2007年10月10日 06:55:00 继承映射策略之----每个具体类一张表 昨天我们看了继承关系中的实现,昨天是用一张表保存所有级别的类,今天我们来了解一下第二种实现方法,每一个类一个单独的表的实现,在数据库我们的例子表现如下: create table Person ( id integer primary key not null, firstName varcha

秦梦瑶的专栏 337

EJB学习日记(7)

2007年10月10日 07:06:00 七种映射关系简介 在实体BEAN中,互相之间的关系有七种,分别是如下七种 1,一对一单向 2,一对一双向 3,一对多单向 4,一对多双向 5,多对一单向 6,多对多单向 7,多对多双向 大家可能发现,为什么没有多对一双向呢?其实多对一的双向,就是一对多的双向,道理是一样的. 今天把典型的应用场哈举个例子,改天再用代码来说话 1,一对一单向.

秦梦瑶的专栏 394

EJB学习日记(11)

2007年10月10日 07:03:00 实体BEAN的七种关系之---------多对一单向 Many-to-One Unidirectional Relationship 多对一单向在某种程度上不但和一对一单向相似并且还和一对多单向挺相似的,但是又不完全相同。多一对单向一般应用在很多实体对应一个实体,被对应的那个实 体并不需要知道谁对应它了,典型的例子就是人对应国家,很多人可以是同一

秦梦瑶的专栏 364

从EJB容器得到的分布式灵感

一个C#分布式容器的开发日记1.思考由于公司的业务需要,我从DELPHI转向JAVA,,没办法,只有重拾书本.(混口饭,不容易呀)刚才时,自己还有一点抵触的思想,毕竟自己一直都对JAVA没兴趣,不然也不会业余学习DONET了.可是看到EJB时,我突然想到一些东西在delphi中开发分布式程序需要借助MIDAS,一切都基于在DCOM上的东西,虽然便捷,但是不能达到EJB中提出的-

Erice的专栏 1152
上一篇: EJB学习日记(8)
下一篇: EJB学习日记(10)
hadeslbf
博客等级 码龄20年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值