更新父实体时出现以下错误:请注意,在持久化新的父子实体时没有错误,只有在合并操作时才会发生错误。
组织。冬眠TransientPropertyValueException:对象引用未保存的临时实例-在刷新之前保存临时实例:
以下是我的实体结构:
public class Vendor implements Serializable {
private static final long serialVersionUID = 4681697981214145859L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "vendor_id")
private Long vendorId;
@Column(name = "biz_type")
private String bizType;
...
@OneToMany(mappedBy = "vendor", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private Set<VendorAddress> vendorAddresses;
}
> public class VendorAddress implements Serializable {
private static final long serialVersionUID = 227762450606463794L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "vendor_adrs_id")
private Long vendorAdrsId;
@Column(name = "vend_adrs_ordinal")
private Integer vendAdrsOrdinal;
// bi-directional many-to-one association to City
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "city_id")
private City city;
// bi-directional many-to-one association to State
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "state_id")
private State state;
// bi-directional many-to-one association to Country
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "country_id")
private Country country;
....
// bi-directional many-to-one association to Vendor
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "vendor_id")
private Vendor vendor;
}
使用DTO通过网络向客户端发送数据,并使用Dozer映射工具将数据从实体复制到DTO。
下面是保存Vendor及其地址的EJB方法。Cascade选项设置为CascadeType。PERSIST,因此子实体供应商地址也与父实体供应商一起保存。//正在保存新供应商,没有任何错误。
@Override
public VendorTO saveVendor(VendorTO vendorTo) throws ErpMiniAppException {
if (vendorTo.getVendorAddresses() != null) {
Iterator<VendorAddressTO> iter = vendorTo.getVendorAddresses().iterator();
if (iter.hasNext()) {
VendorAddressTO addressTo = iter.next();
addressTo.setVendAdrsOrdinal(1); // for new Vendor, address ordinal starts with 1
} else
throw new ErpMiniAppException("Address details no associated with Vendor.");
} else {
throw new ErpMiniAppException("Address details no associated with Vendor.");
}
Vendor vendor = (Vendor) ErpMiniMapper.getEntity(vendorTo, new Vendor());
Vendor persistedVendor = daoFactory.getVendorDAO().insert(vendor);
_logger.debug("InventoryServiceImpl :: saveVendor() new Entity inserted success!");
return (VendorTO) ErpMiniMapper.getTO(persistedVendor, new VendorTO());
}
更新供应商及其地址的EJB方法。“级联”选项设置为“级联类型”。合并,但在提交事务期间引发异常。
@Override
public VendorTO updateVendor(VendorTO vendorTo) throws ErpMiniAppException {
_logger.debug("VendorTO details to be updated -> " + vendorTo.toString());
Vendor vendor = (Vendor) ErpMiniMapper.getEntity(vendorTo, new Vendor());
Vendor updatedVendor = daoFactory.getVendorDAO().update(vendor);
_logger.debug("Entity updated success!");
return (VendorTO) ErpMiniMapper.getTO(updatedVendor, new VendorTO());
}
原因:java。lang.IllegalStateException:org。冬眠TransientPropertyValueException:对象引用未保存的临时实例-在刷新之前保存临时实例:com。是的。企业资源计划服务器达尔。实体。供应商地址。卖主-
因此,我检查集合VendorAddress是否为空,并且是否存在于父实体Vendor中。子实体供应商地址存在于父实体供应商中,因为您可以看到两个主键都存在:
Vendor\u id-
InventoryServiceImpl。java:265)-供应商详情待更新-
尝试使用级联选项CascadeType。所有,得到相同的例外。是什么导致异常将其标记为瞬态实体?
您在供应商
和供应商地址
之间有双向关联。将供应商地址添加到
供应商时。供应商地址
您还必须致电供应商地址。设置供应商
。
public void addAddressToVendor(VendorAddress address){
this.vendorAddresses.add(address);
address.setVendor(this)
}
我目前正在做一个项目,我遇到了这个错误: 发生了什么:1。)我在登录后设置了一个会话范围变量,比如SessionScopeVariableA。 2.)然后我有一个页面,我在其中添加一个实体,比如EntityA。 3.)EntityA有一个惰性字段sessionScopeVariableA,所以当我调用add方法时,我必须设置这个变量。 4.)请注意,SessionScopeVariableA被包装
对象引用未保存的瞬态实例 - 在刷新错误之前保存瞬态实例 我有 3 个实体。我将使用一对多关系映射彼此实体。 产品收费详情有 燃料类型有 计算类型具有 我有一个问题,当我保存产品时,它抛出这样一个错误。我试着用@ManyToOne(cascade = CascadeType。ALL)到productChargeDetail,但是当我保存一个产品时,它显示一个来自应用程序的错误复制错误。FuelTy
对象引用未保存的临时实例-在刷新之前保存临时实例。 我有一个2类组织实体和应用实体。组织和应用程序有多对多的关系。 组织实体 申请实体有 组织运作impl。JAVA 我的问题是,我是否使用applicationRepository保存applicationEntity。save(applicationEntity)也会像我的cascade类型一样保存组织。所有的一切都在现场定义。我犯了这个错误。
我有一个数据库,有两个表Batchstatistics和ReconProcessDateTracker。我想了解他们之间的关系。我使用以下模型类使用hibernate实现这一点: } } 当我试图保存它时,我得到的错误对象引用了一个未保存的瞬态实例——在刷新之前保存瞬态实例:com。美国药典。实体TBLBatch统计
我有以下错误, 对象引用未保存的瞬态实例-在刷新之前保存瞬态实例:Nominee;嵌套异常是java.lang.IllegalStateException:org.hibernate.transientObjectException:对象引用未保存的瞬态实例-在刷新前保存瞬态实例:Nominee对象引用未保存的瞬态实例-在刷新前保存瞬态实例 所以在这里,当我获取employee对象时,我想要将指定
我正在Hibernate中尝试延迟加载实体,但无法克服上面的错误。我基本上在玩2个实体:用户和角色: 然后我有一个创建User实体的action bean,我们称之为方法1: 然后,在设置角色和更新之前,我尝试先持久化用户实体,但也失败了: 请注意: 用户服务。创建=持续 以下是完整的错误日志: