`
liujianguangaaa
  • 浏览: 231707 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

hibernate jpa 一对一映射

    博客分类:
  • java
阅读更多

这些天做公司的项目,用的是springside3的hibernate3.3的jpa映射给我出了不少的难题,但最终都能圆满解决了,其中最难搞定的就是一对一的映射关系,最初我想使用双向一对一,但是由于主表的主键是自动生成,而从表的主键要和主表的主键保持一致,即主键对主键的一对一,结果发现级联保存的时候老是报从表的id为null,由于要继承IdEntity方便管理所以所有的id字段统一的在IdEntity中映射进来,本人菜鸟改了还几次从表的生成策略想要从表的主键依赖外键生成,均没有成功多以决定换一种方法来映射,经多方查阅资料,在从表用manyToOne模拟oneToOne,即在从表中加入一个对应主表id的字段,然后让从表的id自动生成,就能正确存入,但是问题紧跟着又来了,不管我主表或是从表中声明referencedColumnName=“从表中对应主表的id字段”,都没用,hibernate还是会按照主键对主键的方式去查找,所以这次是能存不能查了,最后,绕了一圈又回来了,在从表中还是使用oneToOne,只不过是多声明了一句@joinCilumn(name=“从表中对应主表的id字段”)就OK了。

主表:

@OneToOne(cascade = { CascadeType.ALL }, mappedBy = "irrBuRegionalism")
@PrimaryKeyJoinColumn(referencedColumnName = "reg_id")
public IrrBuRegionalismSdate getIrrBuRegionalismSdate() {
   return irrBuRegionalismSdate;
}

从表:

@OneToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinColumn(name = "reg_id")
public IrrBuRegionalism getIrrBuRegionalism() {
   return irrBuRegionalism;
}

纠正一点错误,今天测试项目发现又不级联查询从表了,仔细检查了打出来的sql语句,发现还是会用主表的主键来对应从表的主键形成一对一,所以老是查出来的从表对象为空,最后发现问题出在@PrimaryKeyJoinColumn(referencedColumnName = "reg_id")这句话上,改成@JoinColumn(name = "reg_id")和从表一样就OK了。

 

分享到:
评论

相关推荐

    hibernate的中所有关系映射(分别用xml和jpa实现)

    hibernate的中关系映射分为一对一、一对多、多对一、多对多,其中有单双向之分。而一对一还有主键和外键区分。一共是九种。分别用xml配置文件和annotation实现。annotation的版本没有写测试程序,见谅。

    hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了

    hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了

    自己做的一个jpa多对多映射的一个例子

    刚学完了hibernate和ejb,自己又自学了下jpa,看了黎活明老师的视频,自己做了个多对多的例子,希望可以对你学习有所帮助,有心人可以联系我QQ770256061!

    hibernate_sample:Hibernate JPA示例

    最终,像Hibernate这样的ORM框架开始在开发领域得到认可,并且对它们的需求也在增加,因此JCP开始制定JPA规范。 像Servlet和JSP一样,JPA是一个规范。 实际运行JPA需要参考实现(RI)。 JPA参考实现有几种选择。 ...

    JPA2映射的神秘之旅

    JPA2映射的神秘之旅,介绍JPA的标准规范以及注解声明的使用,对已如何做一对多,多对一有详细的说明!

    Hibernate_JPA

    关于Hibernate的基本知识,有关关联映射,二级缓存,一对多,多对一,HQL查询等等.

    MyEclipse JPA 教程

     JPA是一个新的类似Hibernate的持久化规范,它已经成为Java EE5规范的一部分。JPA使用Java 5的注解(annotation)来控制将单纯Java类(POJO对象)映射到数据库中的表。MyEclipse的JPA工具提供了功能强大的生成和...

    JPA的生命周期图!!!

    jpa出现短短一年不到时间,已经有29%的市场占有率,JPA也是对数据库的操作,它的优势是sun公司出品的,而且可以集成hibernate,不用谢映射表,我上传了一张JPA的生命周期图,供大家配合java-ee的api自学JPA用

    Hibernate实战(第2版 中文高清版)

     7.1.2 一对一的外键关联   7.1.3 用联结表映射   7.2 多值的实体关联   7.2.1 一对多关联   7.2.2 多对多关联   7.2.3 把列添加到联结表   7.2.4 映射map   7.3 多态关联   7.3.1 多态的多对一...

    jpa-hibernate-alura:Alura的Java和JPA课程

    Alura-Java和JPA课程:使用JPA2和Hibernate持久化对象 这是我在课程之后开发的代码。 我已经对原始版本进行了一些更改。 内容 JPA和Hibernate简介 使用数据库 面向对象范式 在Java代码中避免使用SQL JDBC和SQL维护...

    Pro JPA 2 Mastering the Java Persistence API free down

    要是你对 Hibernate 或 TopLink 的 Criteria API 不熟悉的话,可以将它想像成一个以 Java 为中心的面向对象,线程安全并可以与 JPQL 划上等号的一组 API .这组 API 适合于编写复杂的动态查询语句,还可避免解析 JPQL...

    Hibernate数据持久层框架.rar

    是一款面向对象的ORM框架,JPA不需要关心数据库字段,通过注解将数据库表与实体完成映射,在java中的操作只需要对实体进行操作即可。 什么是ORM? ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象...

    SpringBoot中使用Spring-data-jpa分页查询

    SpringBoot是一款基于Spring框架的开发框架,而Spring-data-JPA是在Hibernate的基础上实现JPA规范的ORM框架。使用SpringBoot和Spring-data-jpa进行分页查询可以大大简化编码流程并提高开发效率。 在使用Spring-data...

    SpringBoot操作数据库jpa-SB系列之006-配套项目

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装。 hibernate劣势 难以使用数据库的一些功能 满足不了程序对cache的需求 耦合度高 debug难 hibernate更新大批量

    SpringBoot使用Spring-data-jpa简化数据访问层

    对数据库的操作无非就“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写...Spring-data-jpa的出现正可以让这样一个已经很“薄”的数据访问层变成只是一层接口的编写方式。

    jpa-workshop:在我的 JPAHibernate 研讨会中使用的一系列示例

    一对一 一对多/多对一 多对多 嵌入式 辅助表 遗产 懒惰抓取 查询 JPQL 命名查询 Spring数据 本机 SQL 乐观锁 复合键(进行中) 去做 添加复合键的更多示例 添加三元键的例子 以上两者混合关联 用户类型(包括 ID ...

    Hibernate注释大全收藏

    Hibernate注释大全收藏 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id...一对一 使用 @OneToOne...

    ejb3.0 jpa

    JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中,图 1很好地描述了JPA的结构: Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用的对象持久...

    Hibernate框架包

    持久化上下文大体内容:1、ORM元数据,JPA支持annotion(注解)或xml两种形式描述对象/关系映射 2、实体操作API,实现对实体对象的CRUD操作 3、查询语言,约定了面向对象的查询语言JPQL(javaPersistence Query ...

    Hibernate注解

    * @OneToMany 设置一对多关联。cascade属性指定关联级别,参考@OneToOne中的说明。fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载 * 方法一 使用这种配置,在为“一端”添加“多...

Global site tag (gtag.js) - Google Analytics