有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaSpringJPA哈希集只返回一个值

我正在使用Spring的web应用程序和MySQL的示例数据库世界,我有一对多的表国家和表语言国家,当用Java创建实体时,一切都正常工作,但是当尝试检索语言集时,只有一种语言返回,即使我有更多语言,有些事情让我失望,我不知道是什么

Pais类

@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;
}

enter image description here


共 (1) 个答案

  1. # 1 楼答案

    您已经准备好了@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方案