java - 带有嵌套字段的Spring数据查询(连接其他列)

标签 java spring spring-data-jpa spring-data

我有 3 个实体 主题文本作者

主题 1:n 文本和文本 1:n 作者

我的实体看起来像这样:

@Entity
public class Topic {
    @Id
    private int id;
    private LocalDate date;
    private String name;
    @JoinColumn(name = "text_id", nullable = false)
    private Text text;
}

@Entity
public class Text {
    @Id
    private int id;
    private LocalDate date;
    private String name;
    private String description;
    @JoinColumn(name = "author_id", nullable = false)
    private Author author;
}

public class Author{
    @Id
    private int id;
    private String name;
    private String description;
}

现在我尝试创建 spring data jpa 查询来获取特定作者的日期之间的主题。

仅解决作品之间的日期的解决方案:

List<Topic> findByDateBetween(LocalDate begin, LocalDate end);

我尝试过这样的事情:

List<Topic> findByDateBetween_AuthorId(LocalDate begin, LocalDate end, int authorId);
List<Topic> findByDateBetweenAuthorId(LocalDate begin, LocalDate end, int authorId);
List<Topic> findByDateBetweenAuthor_id(LocalDate begin, LocalDate end, int authorId);

没有任何作用。有什么建议吗?

最佳答案

在主题的 JPA 存储库中,您可以编写自定义查询。

@Query("SELECT t FROM Topic t" +
       "JOIN t.text tx " + 
       "JOIN tx.author a " + 
       "WHERE a.id = :authorId AND t.date >= :begin AND t.date <= :end")
List<Topic> getTopicsInDatesByAuthor(@Param("begin") LocalDate begin, @Param("end") LocalDate end, @Param("authorId") int authorId);

关于java - 带有嵌套字段的Spring数据查询(连接其他列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52256964/

相关文章:

java - 创建一个给定显式 Node 引用的 "sub-tree"NodeList

java - 如何编译并运行子目录中的java文件

java - 当进程被终止时,Ehcache 不会刷新到磁盘

spring - Spring JPA-找不到实体管理工厂,为什么?

java - 使用 String.split() 访问数值

java - .txt 文件的大小和磁盘上的大小

spring - 单个Spring Kafka Consumer监听器可以监听多个主题吗?

java - java中的请求转发

spring-boot - 您如何在 Spring Boot 应用程序中的同一个域类上同时使用 Spring Data JPA 和 Spring Data Elasticsearch 存储库?

java - 事务内部的Spring Boot LazyInitializationException