当前位置: 首页 > 知识库问答 >
问题:

Spring数据JPA按嵌入对象查找属性

别锐
2023-03-14

我想要编写一个Spring Data JPA存储库接口方法签名,它将允许我查找实体中具有嵌入对象属性的实体。有没有人知道这是否可能,如果可能,如何实现?

@Entity
@Table(name = "BOOK_UPDATE_QUEUE", indexes = { uniqueConstraints = @UniqueConstraint(columnNames = {
        "bookId", "region" }, name = "UK01_BOOK_UPDATE_QUEUE"))
public class QueuedBook implements Serializable {

    @Embedded
    @NotNull
    private BookId bookId;

    ...

}

@Embeddable
public class BookId implements Serializable {

    @NotNull
    @Size(min=1, max=40)
    private String bookId;

    @NotNull
    @Enumerated(EnumType.STRING)
    private Region region;

    ...

}

public interface QueuedBookRepo extends JpaRepository<QueuedBook, Long> {

    //I'd like to write a method like this, but can't figure out how to search by region,
    //when region is actually a part of the embedded BookId
    Page<QueuedBook> findByRegion(Region region, Pageable pageable);

}

共有1个答案

公西翊歌
2023-03-14

这个方法名应该起作用:

Page<QueuedBook> findByBookIdRegion(Region region, Pageable pageable);

参考单据的查询派生部分提供更多信息。

 类似资料:
  • 问题内容: 我想编写一个Spring Data JPA存储库接口方法签名,该签名使我可以在该实体中找到具有嵌入式对象属性的实体。有人知道这是否可行吗? 这是我的代码: 我可以使用Spring Data为此编写查询吗? 问题答案: 此方法名称应能解决问题: 有关参考文档的查询派生的部分中的更多信息。

  • 我有一个LOCATION实体,它包含国家、州和城市。并且我有一个LocationRepository接口定义为: 我想按国家找到所有的州。我可以遵循方法名称标准来查询位置实体的所有内容。如果我想要列表,我需要创建StateRepository接口并在其中查询关于状态的一切吗?如果我可以从LocationRepository中获取它,那么方法是什么样子的?我假设它看起来会像下面这样(当然不起作用)。

  • 在我的遗留应用程序中,我有一个国家表、状态表和一个国家和州的映射表,几乎没有额外的列。 我创建了这样一个实体类。 我的仓库。 我想检查映射表中是否存在状态。以下两种方法都不起作用。 正确的方法是什么?

  • 我正在尝试查询spring data elasticsearch存储库中的嵌套属性。我的存储库如下所示: 域对象Person和Address(无getter/setter)定义如下: 我的测试保存一个人的文档,并尝试使用repository方法读取它。但没有返回任何结果。以下是测试方法: spring data elasticsearch是否支持默认的spring数据查询生成?

  • 问题内容: 该数组如下所示: 我有一个名为的整数变量。 如何选择具有对象的数组条目,其中的属性具有值? 问题答案: 您可以迭代数组,搜索特定记录(一次只能搜索一次),也可以使用另一个关联数组来构建哈希图。 对于前者,像这样

  • 我的用户实体 每个用户都可以有许多角色。给定一个角色(以字符串数据类型表示),我想获取具有此角色的所有用户。 例如 角色为“admin”的User1 角色为“user”的User2 角色为“admin”的User3 对于角色“admin”,我想得到User1和User2。 我对Spring Data Jpa的尝试: 但我得到了豁免 组织。冬眠LazyInitializationException: