Nesneyi oluşturmadan önce, aynı ada sahip öğelerin olup olmadığını kontrol etmek için getUniqueSlug
yöntemini çağırması gereken aşağıdaki varlık sınıfına sahibim.Yay Varlığı Otomatik Kablolu Depo Boş İşaretçisi
@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
Ben de düzgün yaparsa kontrol etmek için aşağıdaki test var: O testi çalıştırdığınızda
@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());
}
, ben NullPointerException
olsun, bu yüzden sorun Autowiring yerde olduğunu varsayalım Category
sınıfında depo. Nerede tam olarak? Bahar varlık yönetemez çünkü
Yineleme, temel sorunun ne olduğunu açıklar, ancak veri nesnesini, özellikle gizli olanları olan hizmet bağımlılıkları ile karıştırmak kötü bir biçimdir. Eğer slug mantığınızı bu şekilde * uygulayabilmeniz * gerekiyorsa, 'CategoryRepository' kelimesini jeneratör metodu olarak parametre olarak geçiriniz. – chrylis