java - Spring JPA HashSet 只返回一个值
问题描述
我正在使用带有 Spring 的 Web 应用程序和 MySQL 的示例数据库世界,我有表国家和表 languageCountries 一对多相关,在 Java 中创建实体时,一切正常,但是当尝试检索一组对于语言,只有一种语言会返回,即使我有更多,我也有一些事情让我失望,我不知道它是什么。
派斯班
@Data
@Entity
@Table(name = "country")
public class Pais implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name="Code")
private String codigo;
@Column(name="Name")
private String nombre;
@OneToOne
@JoinColumn(name = "Capital")
private Ciudad capital;
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name = "Code")
private Set<Idioma> idiomas = new HashSet<>();
}
成语班
@Data
@Entity
@Table(name = "countrylanguage")
public class Idioma implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name="Code")
private String codigo;
@Column(name="Language")
private String nombre;
@Column(name="Is_official")
private String oficial;
@Column(name="Percentage")
private Float porcentaje;
}
解决方案
您有 @OneToMany 关系,但您还需要在 Idioma 类中添加 @ManyToOne 关系。您还可以在此处使用外键定义列。
像这样的东西:
@Entity
public class Country {
@Id
@Column(nullable = false, updatable = false, length = 3)
private String code;
@Column(length = 52)
private String name;
...
@OneToMany(mappedBy = "country", targetEntity = Countrylanguage.class,
fetch = FetchType.LAZY)
private Set<Countrylanguage> countrylanguageCountrys;
}
@Entity
public class Countrylanguage {
@Id
@Column(nullable = false, updatable = false, length = 3)
private String code;
...
@Column(nullable = false, unique = true, length = 30)
private String language;
@ManyToOne
@JoinColumn(name = "country_id", nullable = false)
private Country country;
}
我认为使用https://bootify.io你可以创建 JPA 类,你可以在那里导入你的 SQL 方案。
推荐阅读
- android - 问题(Xamarin Visual Studio)来宾在 7 秒后不在线
- c# - 将实体框架与 Pomelo 一起使用时 MySqlParameter 类型冲突
- qml - 插入符号位置 QtQuick TextField
- jenkins - Jenkins 管道:在“使用参数构建”中隐藏选定的参数
- sql - SQL Server 2016 中的数组到 json 和行到 json
- c++ - 如何将文本文件转换为 MPI_Bcast 可以发送的格式?
- ruby-on-rails - 如何在 Rails 中仅查找所有孙辈都符合某些条件的祖父母记录?
- javascript - Vue 页面未在 Microsoft Edge 上加载
- excel - 删除名称中包含“工作表”一词的任何工作表而不发出警告
- django - 使用错误密码的错误身份验证