gpt4 book ai didi

java - Spring jpa onetomany 仅返回一个元素

转载 作者:行者123 更新时间:2023-12-02 12:41:19 24 4
gpt4 key购买 nike

我正在尝试与 spring data jpa 建立一种双向一对多关系,但用 @onetomany 注释的列表始终返回一个元素。

这是我的实体的代码(省略了 setter 和 getter):

@Entity
@Table(name = "sdk_sdk")
public class SDKEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String version;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "sdk")
@OrderBy("order ASC")
private List<SDKFileEntity> fileEntities;
}

第二个实体:

@Entity
@Table(name = "sdk_file")
public class SDKFileEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String fileType;
private Integer sdkId;

public SDKFileEntity() {
}

@ManyToOne
@JoinColumn(name = "id", insertable = false, updatable = false)
private SDKEntity sdk;

我试图建立一个多对一映射,其中 sdkId 对应于 SDKEntity 类中的 id。每当我尝试使用 spring 的存储库从 sdkEntity 获取 sdkfiles 时,列表的大小始终为 1。

例如:

SDKEntity entity=repository.findOne(foo);
List<SDKFileEntity> files=entity.getFileEntities();

这里文件的大小为1,我必须从数据库中删除第一个元素才能获取第二个元素。

最佳答案

对我来说,原因是父实体实现了 equals 和 hashcode不幸的是,在某种程度上,所有现有实体都是平等的。并且没有一个子实体自己实现它。

因此 @OneToMany 关系仅返回第一个元素。

花了我相当长的时间。

关于java - Spring jpa onetomany 仅返回一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44917071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com