Как получить все элементы сущности в spring-boot?

Я отправляю запрос GET из angular5 в spring-boot, чтобы получить все элементы объекта Contrat ниже.

Это сущность:

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Contrat implements Serializable{

        @Id @GeneratedValue
        private Long id;
        private Date dateDebut ;
        private Date dateFin ;
        @ManyToOne
        @JoinColumn(name = "Id_Project")
        @JsonBackReference(value="projet-contrat")
        private Project project;

        @ManyToOne
        @JoinColumn(name = "Id_AppUser")
        @JsonBackReference(value="appuser-contrat")
        private AppUser appUser;
}

Это репозиторий:

  public interface ContratRepo extends JpaRepository<Contrat,Long> {

    @Query("select from Contrat c where c.appUser = :userApp")
    public Page<Contrat> chercherContrat(@Param("userApp") AppUser userApp  
   , Pageable pageable);

   }

В Angular5 console.log(data) возвращает этот результат, например:

 {id: 1, dateDebut: 1526083200000, dateFin: 1526083200000} 

Итак, как вы можете видеть, нет элемента проекта (который мне нужен во внешнем интерфейсе).

Я хочу показать в angular элементы contrat, а также некоторую информацию о проекте, связанном с .

Есть идеи ?


person dEs12ZER    schedule 22.05.2018    source источник
comment
Вы должны извинить меня, если я слишком усердствую, но вы нарушаете одно из десяти основных правил OWASP, поэтому, надеюсь, вы не размещаете этот код в Интернете. Вы никогда не должны раскрывать первичные ключи из базы данных во внешнем интерфейсе, особенно когда они автоматически генерируются базой данных. В OWASP 2013 это было известно как Небезопасные прямые ссылки на объекты, в OWASP 2017 вы можете найти его как A5-2017: Broken Access Control. Лично я всегда использую DTO при транспортировке данных во внешний интерфейс. Есть много сообщений SO о DTO и сущностях, которые вы можете прочитать для получения более подробной информации.   -  person Klaus Groenbaek    schedule 22.05.2018
comment
Спасибо за эту полезную интересную информацию, я обязательно прочитаю об этом, так что вы имеете в виду, что когда мы видим числовой столбец в таблице веб-приложения или любых других, это не означает, что он находится в базе данных, верно? Я всегда использовал тот, что в базе данных   -  person dEs12ZER    schedule 24.05.2018


Ответы (1)


Вместо jpaRepositiry вы можете использовать репозиторий PagingAndSorting, чтобы получить все сведения о связанных объектах через findAll API.

person saroj    schedule 22.05.2018
comment
не могли бы вы объяснить больше? - person dEs12ZER; 22.05.2018
comment
Пожалуйста, обратитесь к документации по весенней загрузке. - person saroj; 22.05.2018