Внешний ключ не отображается в GET-запросе весенней загрузки - PullRequest
0 голосов
/ 01 мая 2020

Я делаю запрос GET "/ api / admin / tickets". Я не получаю userId в ответ. Я проверил базу данных и там присутствует userId. В сущности «Билет» userId должен действовать как внешний ключ. Я не знаю, почему я не могу увидеть внешний ключ в ответ. Я пытаюсь установить sh отношения один-ко-многим между Пользователем и Ticket.

TicketController. java

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = Constants.ORIGIN)
public class TicketController {

    @Autowired
    private TicketRepository ticketRepository;

    @GetMapping("/admin/tickets")
    public Page<Ticket> getAllTickets(Pageable pageable) throws ResourceNotFoundException{
        return ticketRepository.findAll(pageable);
    }
}

Пользователь. java

@Entity
public class User extends AuditModel {

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


    @Column(nullable = false)
    private String businessUnit;

    @Column(nullable = false)
    private String title;

    public User() {
    }

    // constructor with fields
    // getters and setters

}

Ticket. java

@Entity
public class Ticket extends AuditModel {
    @Id
    @Column(name = "ticketId")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "userId", nullable = false)
    @OnDelete(action = OnDeleteAction.CASCADE)
    @JsonIgnore
    private User user;

    public Ticket() {
        super();
    }

    public Ticket(int id) {
        super();
        this.id = id;
    }

    public int getId() {
        return id;
    }


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

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

TicketRepository. java

@Repository
public interface TicketRepository extends JpaRepository<Ticket, Integer>{

    Page<Ticket> findByUserId(Integer userId, Pageable pageable);
    Optional<Ticket> findByIdAndUserId(Integer ticketId, Integer userId);

}

1 Ответ

1 голос
/ 01 мая 2020

Вы аннотировали поле User в классе Ticket с помощью @JsonIgnore, это предотвращает включение данных User из ответа GET.

Вторая проблема может заключаться в том, что вы загружаете поле User лениво, используя FetchType.LAZY. Это также может помешать включению данных в ответ GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...