org.hibernate.TransientObjectException: com.zbaccp.entity.Orders
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:108)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:242)
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:482)
一般情况下的报错原因:在保存一个临时态对象时,如果其还关联了一个或多个临时态对象,同时没有设置级联保存。
解决方案:在实体配置文件中设置cascade属性为save-update或all。
但此次的报错比较异常,在已经设置了cascade属性的情况下还是会报错。
如在orders中添加了两个orderline对象,则数据库中对于orderline的保存是正确的,但是会保存三个orders记录,且后俩个的记录全为空值。
原因: 在实体类orderline中new了一个orders对象,又设置了级联保存。
解决方案: 只是创建对象即可,无需new。