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

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

>为每个实体单独的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);

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ 入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)

发布/订阅 在上篇第二部分教程中,我们搭建了一个工作队列。每个任务之分发给一个工作者(worker)。在本篇教程中,我们要做的之前完全不一样——分发一个消息给多个消费者(consumers)。这种模式被…

Proxmox VE 安装、配置、使用之第二章 Proxmox VE 的安全性

第一章 Proxmox VE 的安全性一、 角色及权限图2-1-1二、 Root 的密码安全性把 Root 的实际密码给出去, 在任何系统都是不符合安全规范的!所以在 Linux 里面, 最好把有需要 root 权限的使用者 放到 sudoers 的群组.# sudo usermod -a -G sudo testuserPVE 的权限设定方式 是由 u…

java allocate_Java中volatile关键字的最全总结

一、简介volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调…

缩放手势 ScaleGestureDetector 源码解析,这一篇就够了

其实在我们日常的编程中,对于缩放手势的使用并不是很经常,这一手势主要是用在图片浏览方面,比如下方例子。但是(敲重点),作为 Android 入门的基础来说,学习 ScaleGestureDetector 的使用&#x…

postgres的数据库备份和恢复

备份和恢复 一条命令就可以解决很简单: 这是备份的命令: pg_dump -h 127/0.0.1 -U postgres databasename > databasename.bak 指令解释: pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库允许外部访…

java 类的执行顺序_Java中类的执行顺序

讲解在代码中:package 类执行顺序;/*** java类执行顺序** 1、如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块* 2、如果类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块* 3、将类的成员赋予初值(原…

ZooKeeper相关资料集锦

1、ZooKeeper相关概念总结 https://github.com/Snailclimb/JavaGuide/blob/master/docs/system-design/framework/ZooKeeper.md 2、ZooKeeper在Windows下的安装和配置 https://blog.csdn.net/morning99/article/details/40426133 3、Curator框架应用 http://ifeve.com/zookeepe…

JQuery.Ajax()的data参数传递方式

最近,新学c# mvc,通过ajax post方式传递数据到controller。刚开始传递参数,controller中总是为null。现记录一下,可能不全,纯粹记个学习日记。 重点在于参数的方式,代码为例子 1、这里 dataType: "js…

java如何实现封装_java如何实现封装

Java中类的封装是如何实现的封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。 java封装类通过三个步骤实现: (1)修改属性的可见性,限制访问。 (2)设置属性的读取方法。 (3)在读取属性的方法中,添加对…

用了30天整理的一些GO语言学习资料,2019请你加油

因为极其优秀的并发性能,Google的亲儿子Go语言站上了风潮之巅。出现在21世纪的GO语言,虽然不能如愿对C取而代之,但是其近C的执行性能和近解析型语言的开发效率以及近乎于完美的编译速度,已经风靡全球。特别是在云项目中&#xff0…

Kubernetes网络设计原则

在配置集群网络插件或者实践K8S 应用/服务部署请时刻想到这些原则: 1.每个Pod都拥有一个独立IP地址,Pod内所有容器共享一个网络命名空间2.集群内所有Pod都在一个直接连通的扁平网络中,可通过IP直接访问 所有容器之间无需NAT就可以直接互相访问…

php token 验证,PHP如何实现Token验证

PHP如何实现Token验证首先将Token进行解析&#xff1b;然后根据解析出来的信息部分验证是否过期&#xff0c;如果未过期再将解析出的信息部分进行加密&#xff1b;最后将加密出来的数据和解析出来签名进行比对&#xff0c;如果相同则验证成功。示例代码&#xff1a;<?php f…

关于Linux fontconfig 字体库的坑

01、安装字体软件yum -y install fontconfig然后把字体拷过去就行了 cd /usr/share/fonts fc-list 这是查看02、拷贝字体到指定目录 cp simsun.ttc /usr/share/fonts/然后把字体拷过去就行了 cd /usr/share/fonts 03、验证字体安装情况 fc-list //"宋体"中文字体…

满江红.互联网

小小寰球&#xff0c;有多少信息瞬抵。互联网&#xff0c;几多涛生&#xff0c;几多云逸。蚂蚁缘槐近大国&#xff0c;菜鸟搭枝成凤翼。正台风绿叶下临安&#xff0c;何足惧?多少事&#xff0c;从来急&#xff1b;天地转&#xff0c;光阴隙。一百年太久&#xff0c;只争朝夕。…

Python startswith()函数 与 endswith函数

函数&#xff1a;startswith() 作用&#xff1a;判断字符串是否以指定字符或子字符串开头一、函数说明语法&#xff1a;string.startswith(str, beg0,endlen(string)) 或string[beg:end].startswith(str)参数说明&#xff1a;string&#xff1a; 被检测的字符串str&#xff1a;…

GitLab 在多分支中的一个push

情景&#xff1a;a.本地库新建的分支&#xff0c;而Git服务器没有这个分支服务器分支master本地新建分支&#xff1a;rdar-MS&#xff0c;并git checkout rdar-MS上masterrdar-testrdar-MS更改rdar-MS分支上的文件&#xff0c;git add .git commit -m " "后&#xf…

php post 获取xml,php 获取post的xml数据并解析示例

这篇文章主要为大家详细介绍了php 获取post的xml数据并解析示例&#xff0c;具有一定的参考价值&#xff0c;可以用来参考一下。对php获取post过来的xml数据并解析感兴趣的小伙伴&#xff0c;下面一起跟随512笔记的小编两巴掌来看看吧&#xff01;如何获取请求的xml数据,对方通…

值得一用的Windows软件

该清单仅本人使用后所作推荐&#xff0c;可能会比较主观&#xff0c;所以仅供参考哈。可能某些软件链接会失效&#xff0c;可以自行百度搜索下载即可。 杀软 火绒安全&#xff1a;国内杀毒软件的一股清流&#xff0c;界面简洁&#xff0c;无推广。现在已经开启了 5.0 公测&…

《JavaScript模式》读书笔记一:基本技巧

《JavaScript模式》的读书笔记&#xff0c;个人向&#xff01;更新进度随我的阅读进度 基本技巧 尽量少用全局变量 防止变量污染注意JS变量提升问题尽量使用单一var模式&#xff0c;只使用一个var在函数顶部进行变量声明function fun () {var a 1,b2,sum ab,函数体//} for循环…

Python字符串处理全攻略(四):常用内置方法轻松掌握

文章目录 引言Python字符串常用内置方法切片功能介绍语法示例注意事项 str.isalpha()功能介绍语法示例注意事项 str.isdigit()功能介绍语法示例注意事项总结 str.isalnum()功能介绍语法示例注意事项总结 str.isupper()功能介绍语法示例注意事项 islower()功能介绍语法示例注意事…