- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有两个 hibernate 实体 Coupon 和 CouponHistory,在 CouponHistory 和 Coupon 之间具有单向关系。
@Entity
@Table(name = "validity_coupon")
public class Coupon {
@Id
@Column(length = 50, unique = true, nullable = false)
private String code;
private int validity;
private boolean used;
...}
@Entity
@Table(name = "coupon_history")
@TableGenerator(name = "seqGen", table = "shunya_id_gen", pkColumnName = "GEN_KEY", valueColumnName = "GEN_VALUE",
pkColumnValue = "coupon_history_seq", allocationSize = 1)
public class CouponHistory {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "seqGen")
private long id;
@Temporal(TemporalType.TIMESTAMP)
private Date createdOn;
@ManyToOne(fetch = FetchType.LAZY)
private Coupon coupon;
...}
有一个事务服务方法试图将两个实体保存在一个事务中。这里使用 Spring 来处理事务。
@Transactional
public void createCoupon() {
Coupon coupon = new Coupon();
coupon.setCode(RandomStringUtils.randomAlphanumeric(5));
coupon.setValidity(1);
couponRepository.save(coupon);
CouponHistory couponHistory = new CouponHistory();
couponHistory.setCreatedOn(new Date());
couponHistory.setCoupon(coupon);
couponHistoryRepository.save(couponHistory);
}
当我调用此方法时出现以下异常 -
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance beforeQuery flushing : com.poc.CouponHistory.validityCoupon -> com.poc.Coupon; nested exception is java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance beforeQuery flushing : com.poc.CouponHistory.validityCoupon -> com.poc.Coupon
我不明白为什么当我在单个事务中先保存子实体再保存父实体时,hibernate 会提示我。
如果我将优惠券实体的 ID 生成更改为自动,那么一切都会开始正常工作。但我想手动分配优惠券代码,因此 Id 自动生成不在范围内。
如有任何帮助,我们将不胜感激!
最佳答案
由于您不是级联优惠券,因此您需要在保存 CouponHistory 之前对其进行管理,幸运的是,在保存实体时 save() 将返回托管的持久化实体,因此您只需将其分配给优惠券
@Transactional
public void createCoupon() {
Coupon coupon = new Coupon();
coupon.setCode(RandomStringUtils.randomAlphanumeric(5));
coupon.setValidity(1);
coupon = couponRepository.save(coupon);//save will return the managed entity
CouponHistory couponHistory = new CouponHistory();
couponHistory.setCreatedOn(new Date());
couponHistory.setCoupon(coupon);
couponHistoryRepository.save(couponHistory);
}
关于java - transient 属性值异常 : object references an unsaved transient instance - save the transient instance beforeQuery flushing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778937/
我正在尝试实现这个核心数据栈: 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我自己
我是一名优秀的程序员,十分优秀!