我已经在这个问题上找了好几个小时了,但是找不到一个和我的情况完全相符的,并且有一个解决方案。
我有一个现有的Cassandra数据库,但打算在不久的将来迁移到MongoDB。我正在用Spring编写一个Spring来使用Cassandra,但我希望确保将来我可以轻松地切换到Mongo,而不会有太多的痛苦。
@Entity
@Table("stb")
public class NetworkDevice {
@Id
@PrimaryKeyColumn(name = "deviceid", type = PrimaryKeyType.PARTITIONED)
private String deviceid;
// remaining fields/getters/setters/etc omitted常见的NetworkDeviceRepository
public interface NetworkDeviceRepository {
NetworkDevice findByDeviceid(String deviceid);
}卡桑德拉库房
public interface NetworkDeviceCassandraRepository extends NetworkDeviceRepository, CassandraRepository<NetworkDevice, String>{}蒙古族库房
public interface NetworkDeviceMongoRepository extends NetworkDeviceRepository, MongoRepository<NetworkDevice, String> {}当项目启动时,我将出现以下错误
Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type NetworkDevice!看起来Spring变得很困惑,在我的NetworkDevice对象上寻找NetworkDevice方法名作为字段,但这对我来说完全没有意义,而且我尝试过的任何东西(几个小时)都不会影响这个问题。
任何帮助都将不胜感激,谢谢。
发布于 2020-05-26 17:14:33
我发现了问题。显然,卡桑德拉将NetworkDeviceMongoRepository识别为一个潜在的卡桑德拉存储库,因为它与NetworkDeviceCassandraRepository在同一个包中。
将这两个存储库转移到不同的包解决了这个问题。
先于
> Repository Package
+ NetworkDeviceRepository.java
+ NetworkDeviceMongoRepository.java
+ NetworkDeviceCassandraRepository.java后
> Repository Package
+ NetworkDeviceRepository.java
> Mongo Package
+ NetworkDeviceMongoRepository.java
> Cassandra Package
+ NetworkDeviceCassandraRepository.javahttps://stackoverflow.com/questions/61782561
复制相似问题