【问题标题】:JPA Query method not returning anythingJPA Query方法不返回任何内容
【发布时间】: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


【解决方案1】:

查询看起来正确,但可能缺少一些内容:

1) 在您的测试中,您确定“my name”不应该是“my name%”吗? 2) 检查您是否有涵盖此查询的主索引或二级索引(通过 Web 控制台运行相同的查询) 3)你什么时候插入数据?如果您尚未将 couchbase 配置为强一致性,那么您可能一直在读取旧版本的数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 2020-01-26
    • 2018-10-21
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2021-11-20
    相关资源
    最近更新 更多