微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在枚举上使用生成的查询方法?

如何解决有没有办法在枚举上使用生成的查询方法?

我正在尝试使用 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?