关系: 公民 --- 身份证 一对一的关系 数据库设计 create table t_citizen ( cid int primary key, cname varchar, cardid int ); create table t_card( cid int primary key, cardno varchar(45) ); 【Java类设计】 package oneToOne; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; /** * * @author 青山 * @date 2014年10月19日 * @file name: Citizen.java * * 注意:我们决定公民是关系的维护方,那么外键的字段就这公民一方 */ @Entity @Table(name="t_citizen") public class Citizen { @Id @Column(name="cid") @GeneratedValue(strategy=GenerationType.IDENTITY) private int wid; @Column(name="cname") private String name; @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,optional=true) //optional这里为true,表示有公民不一定一定会有身份证;optional英文意思:是否是可选项 @JoinColumn(name="cardid")//指定外键使用JoinColumn private Card card; public int getWid() { return wid; } public void setWid(int wid) { this.wid = wid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Card getCard() { return card; } public void setCard(Card card) { this.card = card; } } =========================================================== package oneToOne; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToOne; import javax.persistence.Table; /** * 身份证类 * @author 青山 * @date 2014年10月19日 * @file name: Card.java * * 注意: 这是关系的被维护方法 */ @Entity @Table(name="t_card") public class Card { @Id @Column(name="cid") @GeneratedValue(strategy=GenerationType.IDENTITY) private int hid; private String cardno; //mappedBy一出现在一对一的关系中就是关系的被维护方法,mappedBy的值是对方哪一个属性维护这个关系 @OneToOne(mappedBy="card",fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH}, optional=false) //optional为false表示有了身份证一定要有一个公民对应,即有了关系的被维护方一定要有关系的维护方 //配偶的编号 private Citizen citizen; public int getHid() { return hid; } public void setHid(int hid) { this.hid = hid; } public String getCardno() { return cardno; } public void setCardno(String cardno) { this.cardno = cardno; } public Citizen getCitizen() { return citizen; } public void setCitizen(Citizen citizen) { this.citizen = citizen; } } =========================================================== package oneToOne; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import util.JPAManagerFactory; public class OneToOneTest { public static void main(String[] args) { EntityManager manager = JPAManagerFactory.getMFInstance().getManager(); EntityTransaction t = manager.getTransaction(); t.begin(); // Card card = new Card(); // card.setCardno("69364376247382"); // Citizen w = new Citizen(); // w.setName("张上哪疯"); // w.setCard(card); // manager.persist(w); // Card car = manager.find(Card.class, 1); // System.out.println(car.getCardno()); // System.out.println(car.getCitizen().getName()); Card car = new Card(); car.setCardno("234324321111"); manager.persist(car); // Card car = manager.find(Card.class, 2); // Citizen c = manager.find(Citizen.class, 1); // c.setCard(car); t.commit(); manager.close(); } }
相关推荐
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
`hibernate-jpa-2.1-api-1.0.0.final.jar`是Hibernate对JPA 2.1规范的实现库,它使得开发者能够使用Hibernate的高效功能同时遵循JPA规范。 **1. Hibernate与JPA的关系** Hibernate最初作为一个独立的ORM框架,后来...
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题
java运行依赖jar包
总之,深入研究"hibernate-jpa-2.0-api-1.0.1.Final-sources"源码不仅可以增强我们对JPA规范的理解,也能帮助我们在实际开发中更好地利用Hibernate,提高代码质量和项目效率。通过分析源码,我们可以找到优化点,...
本篇文章将重点围绕“hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip”这一压缩包,深入解析Hibernate对JPA 2.1 API的实现,以期帮助读者深入理解其内部机制。 JPA(Java Persistence API)是Java平台上的一个...
本篇笔记主要聚焦于JPA的关联映射,这是JPA中一个重要的概念,用于定义实体之间的关系。 关联映射允许我们将数据库中的表关系映射到Java对象的关联上。在Hibernate中,这些关系通常通过XML配置文件来定义,而在JPA...
在Java Persistence API (JPA) 中,一对一双向关联是一种关系映射,它允许两个实体类之间存在一对一的关系,并且每个实体都能引用对方。这种关联是双向的,意味着每个实体都可以通过自己的属性访问到另一个实体。...
**标题详解:** "hibernate-jpa-2.1-api 1.0.0.Final API" 这个标题指的是Hibernate对Java Persistence API (JPA) 2.1规范的实现,版本为1.0.0.Final。Hibernate是Java领域中最受欢迎的对象关系映射(ORM)框架之一...
综上所述,"querydsl-jpa-codegen-3.3.3.zip" 为Java开发者带来了高效、类型的JPA查询解决方案,而"JBugmenot.zip"则提供了一种便捷的匿名登录机制。这两个开源项目展示了Java社区的创新精神和对开发效率的追求。...
本项目"springboot-jpa-activiti-bootstrap-master"正是一个将这三个技术进行深度整合的实例,旨在帮助开发者理解并掌握它们之间的协同工作方式。 首先,SpringBoot是Spring框架的一种轻量级实现,它简化了设置和...
2. **一对多(OneToMany)**: 一个实体可以与多个其他实体相关联,如一个班级有多个学生。使用`@OneToMany`注解,可以设置`fetch`策略(默认为`LAZY`,表示延迟加载)和`cascade`属性(如`CascadeType.ALL`,表示...