Как получить значение моего поля внешнего ключа в json с помощью jpa? - PullRequest
0 голосов
/ 04 июля 2019

У меня есть база данных с некоторыми сущностями, и когда я пытаюсь сделать запрос и получить данные в массиве JSON, я получаю только те поля, которые не являются внешними ключами, а те, которые являются внешними ключами, появляются в ссылке.Как я могу получить поля внешнего ключа нормально?

Вот мой класс модели:

@Table(name = "affecter")
@Data
@Entity
public class Affecter implements Serializable {
  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id", insertable = false, nullable = false)
  private Integer id;

  @Column(name = "dateEntree", nullable = false)
  private Date dateEntree;

  @Column(name = "dateSortie")
  private Date dateSortie;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name="idAffaire", nullable = false)
  @JsonBackReference
  private Affaire affaire;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name="idService", nullable = false)
  @JsonBackReference
  private Service service;

Вот мой репозиторий:

@CrossOrigin("*")
@RepositoryRestResource
public interface AffecterRepository extends JpaRepository<Affecter, Integer>, JpaSpecificationExecutor<Affecter>{
    //Long countById();


    @Query(value = "SELECT a FROM Affecter a WHERE a.service.id = ?1 AND a.dateSortie=null")
    @RestResource(path = "/byService")
    public List<Affecter> findAffecterByService(@Param("idS") Integer service);

}

И это мой JSONмассив, возвращаемый по ссылке: http://localhost:8080/affecters

id: 2,
dateEntree: "2019-06-19T00:00:00.000+0000",
dateSortie: null,
_links: {
self: {
href: "http://localhost:8080/affecters/2"
},
affecter: {
href: "http://localhost:8080/affecters/2"
},
affaire: {
href: "http://localhost:8080/affecters/2/affaire"
},
service: {
href: "http://localhost:8080/affecters/2/service"
}
}

1 Ответ

0 голосов
/ 04 июля 2019

Вы должны отобразить столбцы внешнего ключа как атрибуты в сущности, но только для чтения:

@Column(name = "idAffaire", insertable = false, nullable = false)
private Integer idAffaire;

@Column(name = "idService", insertable = false, nullable = false)
private Integer idService;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...