【发布时间】:2019-10-23 00:03:20
【问题描述】:
我目前正在使用自定义 n1ql 查询,但是它是如此简单的查询,我想我可以使用内置的 jpa 查询方法,但是我无法弄清楚关键词,因为我不是拿回任何东西。
此代码有效:
@Query("SELECT meta().id as _ID, meta().cas as _CAS, * FROM `my-bucket` mb " +
"WHERE mb.name like $1 OR ANY Parent " +
"IN mb.Parents SATISFIES Parent.name like $1 END")
List<MyObject> searchObjectByName(String name);
这不起作用
@N1qlPrimaryIndexed
public interface MyObjectRepository extends CouchbasePagingAndSortingRepository<MyObject, String> {
List<MyObject> findBySecondObjectNameContains(String name);
}
@Data
@Document
public class MyObject{
@Id
private String objectId;
@Field
private SecondObject secondObject;
}
@Data
public class SecondObject {
@Field
private String name;
}
我的测试方法:
@Autowired
private MyObjectRepository myObjectRepository;
@Test
public void testFind() {
List<MyObject> myObjects = myObjectRepository.findBySecondObjectNameContains("my name");
Assert.assertNotNull(myObjects);
}
【问题讨论】:
-
您使用的是 couchbase 而不是 JPA 对吗? JPA 用于关系数据库
-
我想我认为它在后台使用 jpa。是的,我正在使用沙发底座
-
我不是 couchbase 开发人员,但您没有在查询中使用参数名称
-
您的意思是在硬编码查询中?这只是暂时的,因为我 cba 查找语法大声笑,我已经修复了它。
标签: spring-data couchbase spring-data-couchbase