オブジェクトを作成する前に、getUniqueSlug
メソッドを呼び出して、同じ名前のアイテムが存在するかどうかを確認する、次のエンティティクラスがあります。私はそのテストを実行するとSpring Entity Autowired Repository Null Pointer
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration public class CategoryTest {
private MockMvc mockMvc;
@Autowired private CategoryRepository categoryRepository;
@Autowired ObjectMapper objectMapper;
@Autowired private WebApplicationContext webApplicationContext;
@Before public void setUp() throws Exception {
this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
this.categoryRepository.deleteAll();
this.categoryRepository.save(new Category("My category name"));
}
@Test public void testUniqueSlug() throws Exception {
String slug = "My category name";
int integer = 1;
while (categoryRepository.findBySlug(Slug.toSlug(slug)) != null) {
slug = slug + " " + integer;
integer++;
}
this.categoryRepository.save(new Category(slug));
System.out.println(this.categoryRepository.findAll());
}
、私はNullPointerException
を取得するので、私は、問題がどこかにオートワイヤリングであることを前提としています。私もそれが正しくそれをしないかどうかをチェックするために、次のテストを持っている
@Entity public class Category {
@Column private Long id;
@Column(nullable = false) private String name;
@Column(nullable = false) private String slug;
@Autowired private CategoryRepository categoryRepository;
public String getUniqueSlug(String name) {
int i = 1;
while (this.categoryRepository.findBySlug(Slug.toSlug(name)) != null) {
name = name + " " + i;
i++;
}
return Slug.toSlug(name);
}
// Constructors
public Category() {
}
public Category(String name) {
this.name = name;
this.slug = getUniqueSlug(name);
}
// Getters and setters
リポジトリはCategory
クラスにあります。正確にはどこで?春のエンティティを管理していないので、
重複は、コアの問題点を説明していますが、データオブジェクトとサービスの依存関係、特に隠れたものを混在させるのは悪いフォームです。そのようにしてスラッグロジックを実装する必要がある場合は、 'CategoryRepository'をジェネレータメソッドにパラメータとして渡します。 – chrylis