【发布时间】:2021-08-03 00:07:57
【问题描述】:
我正在尝试使用 Spring 中的自动生成查询方法通过使用枚举来获取一些数据,例如:
public enum AnimalType {
MAMMAL,
INSECT
}
但是有两种错误场景
1 - 没有检索到任何内容;
2 - 抛出异常:
Error creating bean with name 'AnimalRepository' defined in com.example.demo.core.animal.AnimalRepository
defined in @EnableMongoRepositories declared on MongoRepositoriesRegistrar.EnableMongoRepositoriesConfiguration:
Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException:
No property AnimalType found for type Insect! Traversed path: Animal.animalType.
在我的一项测试中,我用字符串替换了 Enum,它运行良好。
类是这样的:
public class Animal {
@Id
private String id;
private String description;
private String color;
private AnimalType animalType;
//GET SET
}
和存储库
@Repository
public interface AnimalRepository extends MongoRepository<Animal, String>{
// SOME METHODS HERE
}
我已经试过了:
Optional<Animal> findAnimalByIdAndAnimalTypeLike(String id, AnimalType type);
Optional<Animal> findAnimalByIdAndAnimalTypeInsect(String id);
Optional<Animal> findAnimalByIdAndAnimalType_Insect(String id);
Optional<Animal> findAnimalByIdAndAnimalType_INSECT(String id);
【问题讨论】:
-
很可能,您的数据库包含
Insect的数据,应将其大写为INSPECT。反之亦然 -> 你的枚举应该包含 Inspect
标签: java spring-boot mongodb-query nosql repository