Java 当使用多个关系时,如何在Spring中获取对象外键列表?

Java 当使用多个关系时,如何在Spring中获取对象外键列表?,java,spring,spring-mvc,persistence,Java,Spring,Spring Mvc,Persistence,我有两个模型班。 其中一个是用户,另一个是学位。 每个用户可以获得一个以上的学位。 当我在postbody中创建新用户时,我想发送度列表和Json 我的用户类如下所示: @Entity @Table(name = "USERS") public class User implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) pr

我有两个模型班。 其中一个是用户,另一个是学位。 每个用户可以获得一个以上的学位。 当我在postbody中创建新用户时,我想发送度列表和Json

我的用户类如下所示:

    @Entity
    @Table(name = "USERS")
    public class User implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long id;

        private String name = "";

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "USER_DEGREE",
            joinColumns = @JoinColumn(name = "USER_FK"),
            inverseJoinColumns = @JoinColumn(name = "DEGREE_FK")
    )
    private List<Degree> degreeList = new ArrayList<>();

    public User setDegreeList(List<Degree> degreeList) {
        this.degreeList = traitList;
        return this;
    }
    public User setId(long id) {
        this.id = id;
        return this;
    }
    public User setName(String name) {
        this.name = name;
        return this;
    }

}
我的身体是这样的:

{
  name:"abc",
  degreeList:[1,2,4,6] // or [{id:1},{id:2},{id:4}]
}
如何做到这一点?

有两种方法:

  • 您可以使用字段
    Set
    创建一个DTO类,而不是
    List
    ,将用户对象转换为这个UserDTO对象并返回它

  • 您可以使用此用户类,但必须使用特定的序列化程序。为此,请使用
    @JsonSerialize(using=SomeSerializer.class)
    注释字段,并实现此序列化程序实现
    JsonSerializer
    (或
    Set
    -我现在不能说,这只是个想法)

  • 注意:请记住,默认情况下,
    @manytomy
    字段是惰性的(并且几乎总是必须是惰性的),因此使用
    @Transactional
    可以毫无例外地获取集合

    {
      name:"abc",
      degreeList:[1,2,4,6] // or [{id:1},{id:2},{id:4}]
    }