2012-02-24 23 views
0

我捕獲了json響應,我發現它是{「page」:「1」,「total」:「2」,「records」:「15」,「rows」:[{「id」:1, 「名字」: 「約翰」, 「姓氏」: 「史密斯」, 「用戶名」: 「約翰」, 「密碼」: 「21232f297a57a5a743894a0e4a801fc3」, 「角色」:空},{ 「ID」:2, 「名字」: 「Jane」,「lastName」:「Adams」,「username」:「jane」,「password」:「ee11cbb19052e40b07aac0ca060c23ee」,「role」:null},在Jackson系列化期間,子對象爲null?

我的用戶和角色類非常簡單,所以我我認爲我必須忽略一些微不足道的東西。

@Entity(name="user") 
public class User implements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    private String firstName; 
    private String lastName; 

    @Column(unique=true) 
    private String username; 
    private String password; 

    @JsonIgnore 
    @OneToMany(mappedBy="user", cascade={CascadeType.PERSIST, CascadeType.MERGE},fetch =FetchType.EAGER) 
    private List<Role> roles = new ArrayList<Role>(); 


    public List<Role> getRoles() { 
     return roles; 
    } 

    public void setRoles(List<Role> roles) { 
     this.roles = roles; 
    } 


    @ManyToOne 
    private Role role; 

    public User() {} 

    public User(String username, String password, String firstName, String lastName, Role role) { 
     this.username = username; 
     this.password = password; 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.role = role; 
    } 

    public User(String username, String firstName, String lastName, Role role) { 
     this.username = username; 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.role = role; 
    } 

    public User(String username) { 
     this.username = username; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public Role getRole() { 
     return role; 
    } 

    public void setRole(Role role) { 
     this.role = role; 
    } 
} 

@Entity(name="role") 
public class Role implements Serializable{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @JsonIgnore 
    @ManyToOne 
    @JoinColumn (name = "user_id", nullable= true) 
    private User user; 
    private Integer role; 

    public Role() {} 

    public Role(Integer role) { 
     this.role = role; 
    } 

    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 
    public User getUser() { 
     return user; 
    } 
    public void setUser(User user) { 
     this.user = user; 
    } 
    public Integer getRole() { 
     return role; 
    } 
    public void setRole(Integer role) { 
     this.role = role; 
    } 
} 

我想也

@JsonUnwrapped @ManyToOne私人角色的作用;

但這更糟,因爲在這種情況下,我的json根本沒有任何作用。 { 「ID」:1, 「名字」: 「約翰」, 「姓氏」: 「史密斯」, 「用戶名」: 「約翰」, 「密碼」: 「21232f297a57a5a743894a0e4a801fc3」},

回答

0

我被操縱對象由於複雜的遺留關係要求(即用戶具有角色和角色)將其作爲響應傳遞回來之前不正確。

@JsonUnwrapped只能在子對象中有屬性的情況下解包,因此它按預期工作。

相關問題