2016-05-11 81 views
2

我想發佈xml到彈簧休息控制器,它具有下面的類。 XML正在爲Team對象正確映射,但它沒有在Player對象中映射playerName。 playerName始終爲空。任何人都可以讓我知道這裏有什麼問題。xml沒有映射到java pojo

我的球員XML POJO

@XmlRootElement 
@Entity(name = "player") 
public class Player { 

    @Id 
    @GeneratedValue 
    @Column(name = "player_id") 
    private long player_id; 

    @Column(unique=true , nullable = false) 
    private String playerName; 

    @ManyToOne 
    @JoinColumn(name = "team_id") 
    private Team team; 

    public long getPlayer_id() { 
     return player_id; 
    } 

    public void setPlayer_id(long player_id) { 
     this.player_id = player_id; 
    } 


    public String getPlayerName() { 
     return playerName; 
    } 

    public void setPlayerName(String playerName) { 
     this.playerName = playerName; 
    } 

    public Team getTeam() { 
     return team; 
    } 

    public void setTeam(Team team) { 
     this.team = team; 
    } 


} 

我的團隊XML POJO

@XmlRootElement 
@Entity(name = "team") 
public class Team { 

    @Id 
    @GeneratedValue 
    @Column(name = "team_id") 
    private long team_id; 

    @Column(unique=true , nullable = false) 
    private String name; 

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "team") 
    private List<Player> players; 

    public long getTeam_id() { 
     return team_id; 
    } 

    public void setTeam_id(long team_id) { 
     this.team_id = team_id; 
    } 


    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public List<Player> getPlayers() { 
     return players; 
    } 

    public void setPlayers(List<Player> players) { 
     this.players = players; 
    } 


} 

我的春天休息控制器方法

@RequestMapping(value="/team/", method = RequestMethod.POST , headers="Accept=application/xml") 
    @ResponseStatus(value = HttpStatus.OK) 
    public void createTeam(@RequestBody Team team) throws Exception { 
     for (Player player: team.getPlayers()){ 
      player.setTeam(team); 
     } 
     teamService.createTeam(team); 
    } 

我的XML對此我張貼到控制器。

<team> 
<name>GUj</name> 
<players> 
    <Player> 
    <playerName>Raina</playerName> 
    </Player> 
</players> 
</team> 

當我直接調用與播放器的XML,然後它的工作球員休息方法。下面是創建播放器和播放器xml的其餘代碼。它看起來只是映射問題,是父xml pojo中的子xml pojo。

@RequestMapping(value="/player/", method = RequestMethod.POST , headers="Accept=application/xml") 
    @ResponseStatus(value = HttpStatus.OK) 
    public void createPlayer(@RequestBody Player player) throws Exception { 
     playerService.createPlayer(player); 
    } 

球員XML

<player> 
<playerName>Yuvraj</playerName> 
</player> 

附加調試屏幕截圖中,我可以看到playerName爲空

enter image description here

+0

不應該標籤爲? – Jagrut

+0

你試過配置jacksonObjectMapper嗎?這照顧了映射。 –

+0

@Jagrut我試過這種情況,但沒有區別。 – OneTwo

回答

0

您需要的球員名單上的定義XmlElement

@XmlElement(name="players") 
public List<Player> getPlayers() { 
    return players; 
} 

希望這有助於!

+0

Jagrut - 我試過這個,仍然問題沒有解決。 – OneTwo