JsonIdentityInfo用于hibernate映射

时间:2015-11-09 13:40:03

标签: java json hibernate rest jsonidentityinfo

我有两个实体城市和类型以及这两个实体之间的多对多关系。我需要的是:

  1. 包含类型
  2. 的城市json
  3. 包含城市的类型的json。
  4. 我正在使用JsonIdentityInfo来阻止映射的无限递归,但是我从JSON得到的东西并没有真正帮助我。 这是我目前从城市JSON

    获得的
    0:  {
         @idType: 1
         id: 1
         name: "destination"
         cities: [2]
               - 0:  {
                      @idCity: 2
                      id: 3
                      name: "Zalau"
                      description: "City...."
                      types: [2] <---- I don't need this because I'm already in types JSON
                           - 0:  {
                                  @idType: 3
                                  id: 2
                                  name: "other type"
                                  cities: [1]
                                      - 0:  2
    
                              }
                            - 1:  1 <----- end of don't need
                  }
    
                - 1:  {
                       @idCity: 4
                       id: 0
                       name: "Cluj"
                       description: "City2..."
                       types: [1] <---- don't need
                            - 0:  1
    
                   }
    
    }
    1:  3 <----- I want to be the Type with id 3 although it was already generated from a city
    

    但我需要的是这样的事情:

    0:  {
         @idType: 1
         id: 1
         name: "destination"
         cities: [2]
               - 0:  {
                      @idCity: 2
                      id: 3
                      name: "Zalau"
                      description: "City...."
                  }
    
                - 1:  {
                       @idCity: 4
                       id: 0
                       name: "Cluj"
                       description: "City2..."
                   }
    
    }
    1:  {
         @idType: 3
         id: 2
         name: "other type"
         cities: [1]
            - 0:  {
                   @idCity: 2
                    id: 3
                    name: "Zalau"
                    description: "City...."
               }
    }
    

    对于城市JSON也是如此。我需要它是双向的。

    这是我的实体的代码:

    城市:

    @Entity
    @Table(name = "City")
    @XmlRootElement
    @JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@idCity")
    
    public class City {
    
       @Id
       @GeneratedValue(strategy = GenerationType.AUTO)
       @Column(name = "idCity")
       private int id;
    
       @Column(name = "name")
       private String name;
    
       @Column(name = "description")
       private String description;
    
       @ManyToMany(fetch = FetchType.EAGER)
       @JoinTable(name = "CityType", joinColumns = { @JoinColumn(name = "idCity") }, inverseJoinColumns = {
            @JoinColumn(name = "idType") })
       private Set<Type> types = new HashSet<Type>();
    
    .... getters and setters
    }
    

    类型:

    @Entity
    @Table(name = "Type")
    @XmlRootElement
    @JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@idType")
    public class Type {
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "idType")
        private int id;
    
        @Column(name = "name")
        private String name;
    
        @ManyToMany(fetch = FetchType.EAGER, mappedBy = "types")
        private Set<City> cities = new HashSet<City>();
    
        .... getters and setters
    }
    

1 个答案:

答案 0 :(得分:1)

Chnage the line

PHP Post

两个班级。