如何解决有没有办法在枚举上使用生成的查询方法?
我正在尝试使用 Spring 中自动生成的查询方法通过使用 Enum 获取一些数据,例如:
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);
解决方法
您误导了 jpa 约定查询的变量名称。您的变量名称是类型。所以你的查询应该是这样的:
Optional<Animal> findAnimalByIdAndTypeLike(String id,AnimalType type);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。