Ошибки на геттерах с аннотациями - PullRequest
0 голосов
/ 11 апреля 2019

Я следую хорошему учебнику: https://www.youtube.com/watch?v=7YyR7lZyH5Y
Я застрял на 35:45, потому что у меня есть некоторые ошибки в Eclipse с "c1.getProducts (). Add (p);"и трассировка стека для меня на самом деле бессмыслица.

Мой код выглядит так:

@SpringBootApplication
public class CatalogServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(CatalogServiceApplication.class, args);
    }

    /* Traitement réalisé au démarrage de l'application
     * On initialise ici une partie des données
     */
    @Bean
    CommandLineRunner start(CategoryRepository categoryRepository, ProductRepository productRepository) {
        return args->{
            categoryRepository.deleteAll();
            Stream.of("C1 Ordinateurs", "C2 Imprimantes").forEach(c->{
                categoryRepository.save(new Category(c.split(" ")[0],c.split(" ")[1], new ArrayList<>()));
            });
            categoryRepository.findAll().forEach(System.out::println);

            productRepository.deleteAll();
            Category c1=categoryRepository.findById("C1").get();
            Stream.of("P1", "P2", "P3","P4").forEach(name->{
                Product p=productRepository.save(new Product(null, name, Math.random()*1000,c1));
                c1.getProducts().add(p);
                categoryRepository.save(c1);
            });

            Category c2=categoryRepository.findById("C2").get();
            Stream.of("P5", "P6", "P7","P8").forEach(name->{
                Product p=productRepository.save(new Product(null, name, Math.random()*1000,c2));
                c1.getProducts().add(p);
                categoryRepository.save(c2);
            });

            productRepository.findAll().forEach(p->{
                System.out.println(p.toString());
            });
        };
    }
}

// Категория класса, помеченная Lombok

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

// Un document est un enregistrement dans la base - au format JSON
@Document
@Data @AllArgsConstructor @NoArgsConstructor @ToString
public class Category {

    // En principe les id sont des String avec MongoDB
    @Id
    private String id;
    private String name;
    // On suppose que la liste est vide à la création de la Category
    @DBRef
    private Collection<Product> products = new ArrayList<>();
}

Результатexpectes - добавить товар в список категорий.Ошибка в Eclipse говорит: [ОШИБКА] Ошибки: [ОШИБКА] CatalogServiceApplicationTests.contextLoads »StackOverflow

Если у кого-то есть идеи.Thx

Тестовый класс:

package org.sid;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class CatalogServiceApplicationTests {

    @Test
    public void contextLoads() {
    }

}

1 Ответ

0 голосов
/ 12 апреля 2019

Я думаю, что @Getter отсутствует в классе категории

@Getter
@Document
@Data @AllArgsConstructor @NoArgsConstructor @ToString
public class Category {

    // En principe les id sont des String avec MongoDB
    @Id
    private String id;
    private String name;
    // On suppose que la liste est vide à la création de la Category
    @DBRef
    private Collection<Product> products = new ArrayList<>();
}

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