带有注释的吸气剂上的错误

时间:2019-04-11 14:48:12

标签: java lombok

我正在关注一个不错的教程: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<>();
}

预期结果是将产品添加到类别列表中。 Eclipse中的错误说: [ERROR]错误: [错误] CatalogServiceApplicationTests.contextLoads»StackOverflow

如果有人有想法。 谢谢

测试类:

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 :(得分:0)

我认为类别类中缺少@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<>();
}