Hibernate返回PersistentBag而不是List

时间:2018-08-13 13:48:06

标签: spring hibernate spring-boot jpa spring-data-jpa

我有下面的关系b.w下面给出的两个实体,当我从存储库中获取OutletProductVariety对象时,即使在使用fetchtype Eager之后,价格也在PersistentBag中而不是作为List出现。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    ' YOUR CODE HERE (Just copy whatever the close button does)

    If CloseMode = vbFormControlMenu Then
        Cancel = False
    End If

End Sub

@Entity
public class OutletProductVariety  {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  Long id;

  @ManyToOne
  @JoinColumn(name = "varietyId")
  Variety variety;

  @OneToMany(mappedBy = "outletVariety", fetch = FetchType.EAGER)
  List<Price> price;
}

如何获取价格列表,而不是PersistentBag?

1 个答案:

答案 0 :(得分:1)

看看休眠PersistentBag

  

可以包含相同元素的无序,无键集合   多次。奇怪的是,Java collections API没有   袋。大多数开发人员似乎都使用列表来表示   包语义,因此Hibernate遵循这种做法。

public class PersistentBag extends AbstractPersistentCollection implements List

protected List bag;

它实现了java.util.List;,因此基本上是List并在内部包装了列表

这只是休眠状态代表您的列表的方式。