@GetMapping не сериализует идентификаторы - PullRequest
0 голосов
/ 05 февраля 2019

У меня проблема с @GetMapping в Весенняя загрузка .

Речь идет о моей функции @GetMapping, которая не сериализует мои id на этой модели при получении всех данных.из базы данных:

//User.java
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "username")
    private String username;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "joined_date")
    @CreatedDate
    private Date joinedDate;

    @Column(name = "password")
    private String password;

    @Column(name = "bio")
    private String bio;

    @Column(name = "email")
    private String email;
}

Я пробовал много способов, но не могу решить вообще.Даже этот вопрос: Spring boot @ResponseBody не сериализует идентификатор сущности

Это изображение ниже:

The ids doesn't serialized in json

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Вы должны использовать @PathVariable в вашем контроллере.Вы можете попробовать это:

Объект:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

Контроллер:

@GetMapping("/users/{id}")
public ResponseEntity<User> getUserFromId(@PathVariable int id) {
    System.out.println(id); // should display the id
    // ...
}
0 голосов
/ 09 февраля 2019

Я сделал это!Потому что я забыл поставить getter/setter для модели.И здесь есть еще потенциалы, которые я хочу сказать:

И существует полная форма модели:

package com.harrycoder.weebjournal.user;

import java.util.Date;

import javax.persistence.*;

import org.springframework.data.annotation.CreatedDate;

import com.fasterxml.jackson.annotation.*;

@Entity
@Table(name = "users")
@JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, 
        allowGetters = true)
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "username")
    private String username;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "joined_date")
    @CreatedDate
    private Date joinedDate;

    @Column(name = "password")
    private String password;

    @Column(name = "bio")
    private String bio;

    @Column(name = "email")
    private String email;

    public Integer getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public String getBio() {
        return bio;
    }

    public String getEmail() {
        return email;
    }

    public Date getJoinedDate() {
        return joinedDate;
    }
}   
0 голосов
/ 05 февраля 2019
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

Одним из решений является использование класса-оболочки Integer вместо int.Значение по умолчанию для int равно 0, а для Integer - null.

...