我有一个简单的一对一关系:

>为每个实体单独的DAO.

>事务由Spring管理.

PersonDao personDao = ctx.getBean(PersonDao.class, "personDaoImpl");

VehicleDao vehicleDao = ctx.getBean(VehicleDao.class, "vehicleDaoImpl");

Vehicle vehicle = new Vehicle("Audi");

Person person = new Person("Mike");

vehicle.setPerson(person);

person.setVehicle(vehicle);

personDao.save(person);

vehicleDao.save(vehicle);

每当我运行应用程序时,都会出现以下异常:

Exception in thread "main"

org.springframework.dao.InvalidDataAccessApiUsageException:

org.hibernate.TransientPropertyValueException: object references an unsaved

mike.Person.vehicle -> mike.Vehicle; nested exception is

java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException:

object references an unsaved transient instance - save the transient instance

before flushing : mike.Person.vehicle -> mike.Vehicle

我尝试保存两个订单中的实体:

personDao.save(person);

vehicleDao.save(vehicle);

vehicleDao.save(vehicle);

personDao.save(person);

和我得到同样的例外.

我可以通过以下方法解决此问题:

>使用级联.

>我猜想OpenSessionInView也可以.

问题是,是否有更好的解决方案?也许我在做一些根本错误的事情?

以下是(琐碎的)实体和DAO:

@Entity

public class Person {

@Id @GeneratedValue

private int id;

private String name;

@OneToOne

private Vehicle vehicle;

/* getters, setters, constructors */

}

@Entity

public class Vehicle {

@Id @GeneratedValue

private int id;

private String name;

@OneToOne

private Person person;

/* getters, setters, constructors */

}

@Repository

public class PersonDaoImpl implements PersonDao {

@PersistenceContext

private EntityManager em;

@Transactional

public void save(Person p) {

em.persist(p);

}

}

@Repository

public class VehicleDaoImpl implements VehicleDao {

@PersistenceContext

private EntityManager em;

@Transactional

public void save(Vehicle v) {

em.persist(v);

}

}

java form 对象 一对一_java-双向一对一地“对象引用了一个未保存...相关推荐

  1. java匿名对象 回收_Java 匿名对象

    我们知道一般实例化一个对象的格式,如下: Car car = new Car(); 其中,变量名 car 就是 new Car() 这个对象的名字.car 是引用类型的变量,它的值存放的是对象的引用( ...

  2. java string 对象地址_Java中String对象的存储位置(学习笔记)

    packagetest.string.equal;public classMain {/*** 创建了三个对象,"helloworld对象创建在常量池中",每次new String ...

  3. java static 对象加锁_java安全编码指南之:lock和同步的正确使用

    简介 在java多线程环境中,lock和同步是我们一定会使用到的功能.那么在java中编写lock和同步相关的代码之后,需要注意哪些问题呢?一起来看看吧. 使用private final object ...

  4. java 数组对象长度_Java中的数组长度:关于Java中数组长度的所有信息

    Java中的数组可以包含多个元素,这取决于对象是如何创建的.为了让用户执行不同的操作,必须知道数组的长度.这篇关于"Java中的数组长度"的文章旨在让我们熟悉用于获取数组长度的操 ...

  5. java继承对象转换_java 继承的基础(转)

    java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...

  6. java集合对象声明_Java基础————集合类

    原标题:Java基础----集合类 理解集合类 集合类存放于java.util包中. 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(refere ...

  7. java遍历对象属性_java开发中遍历一个对象的所有属性并set值 缓存优化

    今天技术之家陪你一起了解java开发中遍历一个对象的所有属性并set值 缓存优化: Java反射 1.创建缓存池,可以加快访问速度private static final Map> CACHE  ...

  8. java 静态对象数组_Java静态方法和实例方法 java中的数组作为形参传入

    原标题:Java静态方法和实例方法 java中的数组作为形参传入 Java静态方法和实例方法 java中的数组作为形参传入 Java虚拟机 启动一个Java程序的时候,会诞生一个虚拟机实例,当程序关闭 ...

  9. java set 对象去重_JAVA对象去重

    JAVA对象去重比较恶心的说 需求:我要做的是去重每个权限的菜单,菜单表结构是 ID RoleID MenuID  获取的菜单表 应该是MenuID不能重复的 所以写菜单表的实体类,重写equals ...

最新文章

  1. 读书笔记《Hadoop开源云计算平台》
  2. 2019 CCPC wannfly winter camp Day 5
  3. 博客园 创始人 杜勇
  4. mysql5.7.26修改账号密码_修改mysql5.7的用户密码
  5. Xshell中文乱码问题
  6. PYTHON笔记 面向对象程序设计
  7. fota mcsync洛达检测_详细解析最新推出的顶配版二代悦虎主板洛达1562M数字音频长续航款...
  8. 如何利用模型对大客户风险评估——信用额度进行推测
  9. eNSP下载安装超详细,华为模拟器下载安装
  10. opencv 阈值处理(python)
  11. 日本艺伎的拍照姿势,竟源于孔子?看完真的涨知识···
  12. Across the great wall we can reach every corner in the world
  13. 11 Animation动画
  14. 电源开关电源200W 12V 24V,电源架构PFC+LLC+同步整流,高效率高功率因数
  15. openstack平台上创建云主机
  16. 审核和发送环节脱离?!看TOP级企业如何解决安全管理问题
  17. Scala Cookbook读书笔记 Chapter 3.Control Structures 第一部分
  18. 宝马汽车与中国马文化系列展示
  19. Qt中事件过滤器eventFilter中所有枚举事件总结
  20. excel数据分类汇总怎么做

热门文章

  1. 数据库有哪些设计技巧
  2. 【收集】C#一些基础的面试题
  3. 50条超精辟的经典语录:哗众,可以取宠,也可以失宠!
  4. mysql导出如何不区分大小写_mysql 不区分大小写
  5. 美学评价_卡美学的真正美
  6. [Web开发] MySpace 发布开发接口
  7. ASP.NET 使用Ajax(转)
  8. Thread.sleep还是TimeUnit.SECONDS.sleep
  9. 选择湿度传感器注意的若干问题
  10. decode 大于比较 小于_6 燃气输配系统6.3 压力不大于1.6Mpa的室外燃气管道城镇燃气设计规范 GB500282006(2020修订版)...