【发布时间】:2021-09-15 23:37:01
【问题描述】:
嘿,我需要一些关于我无法弄清楚的 SQL 查询的帮助。 我得到了这两个具有 OneToMany/ManyToOne 关系的表:
create table Author (
"UUID" RAW(16) DEFAULT NULL NOT NULL ENABLE,
"name" VARCHAR2(255 CHAR) NOT NULL ENABLE,
"processed" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
CONSTRAINT "Author_P" PRIMARY KEY ("UUID"),
)
create table Book (
"UUID" RAW(16) DEFAULT NULL NOT NULL ENABLE,
"name" VARCHAR2(255 CHAR) NOT NULL ENABLE,
"release" TIMESTAMP(6),
"AUTHOR_ID" RAW(16) NOT NULL,
CONSTRAINT Book_P PRIMARY KEY (UUID),
CONSTRAINT Book_F FOREIGN KEY (KAFKA_BEZIEHUNG_ID) REFERENCES "Author" ("UUID")
)
现在我得到了这个选择查询来获取当前日期之前写的所有书籍:
(我在 Java JPA 中通过 Query Annotation 执行此操作)
@Query(Select b from Book b where b.release < current_timestamp)
List<Book> findAllBooksBeforeToday();
在这种情况下,我将归还所有书籍,但我的替代品是:
- 只返回作者,没有重复
- 另外,我只想返回“已处理”值为 false 的作者。
我可以通过这样做或至少我认为但那不是很有效:
@Query(Select b.author_id from Book b where b.release < current_timestamp)
HashSet<Author> findAllBooksBeforeToday();
第二个条件很简单:
@Query(Select a from author a where a.processed = false)
所以我现在的问题是,我如何甚至可以将这两个查询组合到一个查询中,该查询从 book 表中进行选择,但只返回已处理的作者 = false?
【问题讨论】:
标签: java sql oracle spring-data-jpa