Java Spring启动时,延迟加载正在为同一标识符创建不同的对象
我只是从“刚刚”的hibernate迁移到Spring Boot。我在使用延迟加载一对多关系时遇到一些问题 假设我创建了这些类: SalesQuot类Java Spring启动时,延迟加载正在为同一标识符创建不同的对象,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我只是从“刚刚”的hibernate迁移到Spring Boot。我在使用延迟加载一对多关系时遇到一些问题 假设我创建了这些类: SalesQuot类 @Entity @Table( name = "sales_quot" ) public class SalesQuot{ @Id @GeneratedValue( strategy = GenerationType.IDENTITY ) private long id = 0; @OneToMany(fetc
@Entity
@Table( name = "sales_quot" )
public class SalesQuot{
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private long id = 0;
@OneToMany(fetch= FetchType.LAZY, targetEntity=SalesQuotSub.class, cascade = CascadeType.ALL, mappedBy="salesQuot", orphanRemoval=true)
private List<SalesQuotSub> subs;
}
@Entity
@Table( name = "sales_quot_sub" )
public class SalesQuotSub{
@ManyToOne(fetch= FetchType.LAZY)
@JoinColumn(name="sales_quot")
private SalesQuot salesQuot;
}
我使用crudepository和这个配置来启用延迟加载
(“hibernate.enable\u lazy\u load\u no\u trans”,true)
然后,考虑我有1个“销售”实例,它有3个销售子实例作为其子< /P>
salesQuot.subs = { sub1, sub2, sub3 }
全部保存到数据库中,一切正常。
当我试图从数据库加载它们时,问题就出现了。延迟加载工作正常,但实际的父实例(salequot)和从子对象的父属性(例如:sub1.salequot)获取的父对象具有不同的值。
打印结果示例:
salesQuot = sales.quotation.SalesQuot@2f3f1bfa
sub1.salesQuot = sales.quotation.SalesQuot@22be2326
sub2.salesQuot = sales.quotation.SalesQuot@22be2326
sub3.salesQuot = sales.quotation.SalesQuot@22be2326
我想要的是他们应该返回相同的对象。你们能帮我吗
永远不要在“只是”冬眠中遇到这种情况,为糟糕的英语道歉。
先谢谢你
PS:我尝试过使用快速抓取,一切正常,它们返回相同的父实例。Up仍然没有解决dup Up仍然没有解决