Java 添加JPA非主键引用的多通实体
现在,为了创建DemandItem,我应该首先使用skuCode加载库存,然后使用setInventory设置库存。只是调用setSkuCode函数,导致暂时的实体异常。如何解决,Java 添加JPA非主键引用的多通实体,java,mysql,spring,hibernate,jpa,Java,Mysql,Spring,Hibernate,Jpa,现在,为了创建DemandItem,我应该首先使用skuCode加载库存,然后使用setInventory设置库存。只是调用setSkuCode函数,导致暂时的实体异常。如何解决, 我只需要在创建数据时填充SKU代码,但在创建此实体时不需要加载它 提取时,我需要加载库存实体 @默认情况下,manytone的fetch是急切的,因此在提取DemandItem时,将加载库存。设置库存应该在持久化上下文中,它不应该是新的,因为您的Orm将无法在db上识别它。在持久化时,您必须在持久化DemandIte
@默认情况下,manytone的fetch是急切的,因此在提取DemandItem时,将加载库存。设置库存应该在持久化上下文中,它不应该是新的,因为您的Orm将无法在db上识别它。在持久化时,您必须在持久化
DemandItem
之前在DemandItem
上设置关联的库存。您可以在一行代码中获取库存。我不确定您想要解决的问题到底是什么。为什么每次保存DemandItem记录时都要加载DB数据?…我只是在DemandItem记录中只存储sku代码…我只需要在提取DemandItem时获取库存..对我来说,读取较少,并且DemandItem的wirte频繁…没有加载的用途每次写入时都会显示库存DemandItem@ManyToOne默认情况下,eager
,因此在提取DemandItem时将加载库存。设置库存应该在持久化上下文中,它不应该是新的,因为您的Orm将无法在db上识别它。在持久化时,您必须在持久化DemandItem
之前在DemandItem
上设置关联的库存。您可以在一行代码中获取库存。我不确定您想要解决的问题到底是什么。为什么每次保存DemandItem记录时都要加载DB数据?…我只是在DemandItem记录中只存储sku代码…我只需要在提取DemandItem时获取库存..对我来说,读取较少,并且DemandItem的wirte频繁…没有加载的用途每次写入DemandItem时,库存始终保持不变
public class DemandItem extends BaseEntity{
@ManyToOne(cascade = {})
@JoinColumn(name = "sku_code",referencedColumnName = "sku_code", nullable = false)
private Inventory inventory;
public Inventory getInventory() {
return inventory;
}
public void setInventory(Inventory inventory) {
this.inventory = inventory;
}
public void setSkuCode(String skuCode){
if(this.inventory == null){
this.setInventory(new Inventory(skuCode));
}
}
public String getSkuCode(){
if(this.inventory != null){
return this.inventory.getSkuCode();
}
return null;
}
}