当前位置: 代码迷 >> java >> @DiffIgnore和@ShallowReference在回调中导致奇怪的行为
  详细解决方案

@DiffIgnore和@ShallowReference在回调中导致奇怪的行为

热度:67   发布时间:2023-07-26 14:23:12.0

刚开始使用javers代替envers,并陷入关联(@OneToMany和@ManyToOne)。 为了防止Javers扫描和注册所有关联更改,我对所有@OneToMany关联应用了@DiffIgnore,奇怪的是,当我在休眠的后持久事件中获取实体时,@ DiffIgnore注释的属性被忽略,并且在访问这些字段时出现了惰性初始化异常。

这是我的示例实体:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "property")
@ShallowReference
private List<PropertyImage> propertyImages = new ArrayList<>();

物业图片

 @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "property_id", referencedColumnName = "property_id", nullable = false)
private Property property;

我也尝试了@ShallowReference批注,但是它再次获取所有关联的实体并导致性能问题。

但是当我更改@ FetchType.EAGER时,它可以正常工作。 困惑这里有什么问题

ShallowReference不适用于Lists,对此我们有一个未解决的问题,请参阅

  相关解决方案