- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个简单的一对一关系:
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 unsavedmike.Person.vehicle -> mike.Vehicle; nested exception isjava.lang.IllegalStateException: org.hibernate.TransientPropertyValueException:object references an unsaved transient instance - save the transient instancebefore flushing : mike.Person.vehicle -> mike.Vehicle
I tried saving the entities in both orders:
personDao.save(person);
vehicleDao.save(vehicle);
和
vehicleDao.save(vehicle);
personDao.save(person);
我得到了同样的异常。
我能够通过以下方式解决这个问题:
问题是有没有更好的解决办法?也许我在做一些根本性的错误?
以下是(琐碎的)实体和 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);
}
}
最佳答案
我遇到了这个错误,这让我很头疼,直到我弄清楚原因......就像它说的那样
object references an unsaved transient instance // Read it again
实际原因,您的对象 - 这里的外键映射对象指的是一个值,该值在保存主键的表的主键字段中不可用(在执行 dao 操作时在表中不可用)。所以你必须在对持有外键的模型类执行操作之前对主键表执行操作..
如果你对上面的段落感到困惑,那么我会把它写得简短而亲切
您的外键引用的值在主键字段中不可用
尝试sysout
外键的值
System.out.println(modelClassObject.getForeignKeyGetter().getId());
我确定它会返回 0 或外键引用的主键字段中不可用的值。
关于java - "object references an unsaved transient instance"双向一对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386709/
我正在尝试实现这个核心数据栈: PSC <--+-- MainMOC | +-- BackgroundPrivateMOC 有些事情我其实不明白。也许我们的 Persist
将 ManagedObject 插入上下文后,我想稍后但在保存上下文之前获取它(我会在插入所有对象后保存)。如果先前未保存上下文,则稍后使用有关这些对象的获取来查询上下文似乎不会返回任何内容。有没有办
我正在尝试访问不属于工作区的文件数据,经过一些测试发现我的对象属于 FileStoreEditorInput 类型。我发现访问 FileStoreEditorInput 数据的解决方案使用了普通的 J
在 Grails 中保存 Trip 实例时出现以下异常: 2011-01-26 22:37:42,801 [http-8090-5] ERROR errors.GrailsExceptionResol
我在核心数据项目上遇到了一些问题。我有一个 NSArrayController,其中包含 NSManagedObjects 和 +/- 按钮。如果我在保存文件后删除行中的一个对象,它可以正常工作,但是
当我尝试同时上传两个调用同一 Controller 进行提交的文件时,会发生此错误。相关代码如下: Image 1
我们有一个典型的 Web 应用程序,它本质上是一个数据输入应用程序,有很多屏幕,其中一些屏幕具有一定程度的复杂性。我们需要提供标准功能,以确保如果用户在离开或关闭浏览器之前忘记单击“保存”按钮,他们会
这是我的域名。 import org.apache.commons.lang.builder.EqualsBuilder import org.apache.commons.lang.builder.
我正在使用 Hibernate,并且出现以下错误: org.hibernate.TransientObjectException:对象引用未保存的 transient 实例-在刷新之前保存 trans
我的用户位于处于ManyToOne关系的组织中,当使用现有组织创建用户时,我尝试将其分配给该用户而不创建新组织。 在我的服务中,以下是我创建用户的方法: @Override public UserIn
我有一个简单的一对一关系: 每个实体的独立 DAO。 事务由 Spring 管理。 PersonDao personDao = ctx.getBean(PersonDao.class, "perso
有一个著名的异常(exception): org.hibernate.StaleObjectStateException: Row was updated or deleted by another
使用 parse.com 和 JavaScript SDK。 我已经搜索过,但找不到合适的答案。 当我仅使用当前用户时,此功能有效。然而它应该做的是使用存储在变量 friendRequest 中的值查
我正在使用 JPA/Hibernate。 假设我有文件夹和文件。每个文件夹可以包含更多文件夹和文件。每个文件都知道它的根文件夹是什么(不是父文件夹)。 @Entity public class Fol
我正在使用 JPA/Hibernate。 假设我有文件夹和文件。每个文件夹可以包含更多文件夹和文件。每个文件都知道它的根文件夹是什么(不是父文件夹)。 @Entity public class Fol
遵循此文档:http://pm2.keymetrics.io/docs/usage/startup/#saving-current-process-list pm2 save 会将当前进程列表保存到
首先,我昨天尝试问过类似的问题 ( NHibernate many-to-many relationship question: can select, can't update ),但经过一个晚上的
我使用 Visual Basic 2010 Express。我有一个与我创建的本地 SQL 数据库链接的 DataGridView。我目前拥有它,用户可以单击一个按钮将他们的数据保存到数据库中,但是如
我在使用分布式文件系统的机器集群上运行 Jupyter 笔记本。 一段时间后,由于错误,我无法打开新笔记本: Close without saving? File "XXX.ipynb" has un
让我们使用这些类: class User #]> u.project_participations => #]> 到目前为止一切顺利 - AR 创建了 ProjectParticipation我自己
我是一名优秀的程序员,十分优秀!