gpt4 book ai didi

java - 如何创建 QClass ,没有实体或与 QueryDSL 中的两个表关联

转载 作者:行者123 更新时间:2023-12-01 16:18:21 24 4
gpt4 key购买 nike

假设我有三个类(class)

    @Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column
private String name;
}

@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column
private String fistName;

@Column
private String lastName;
}

@Entity
public class AuthorBookRelation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne
@JoinColumn(name = "author", referencedColumnName = "id")
private Author author;

@ManyToOne
@JoinColumn(name = "book", referencedColumnName = "id")
private Book book;
}

因此,我有三个 Qclasses

QAuthor QBook QAuthorBookRelation。

但我只能上两个类。

@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column
private String name;
}

@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column
private String fistName;

@Column
private String lastName;

@ManyToMany
@JoinTable(
name = "author_book_relation",
joinColumns = {@JoinColumn(name = "author")},
inverseJoinColumns = {@JoinColumn(name = "book")}
)
private List<Book> books = new ArrayList<>();
}

那么就不需要 AuthorBookRelation 类了。但我需要 QAuthorBookRelation 来使用 queryDSL 创建请求

如何创建一个绑定(bind)到两个表的类?

最佳答案

我认为您没有捕获 JPA、JPQL 和 QueryDSL 的重点。您应该加入关联实体。这些技术中绝对不需要关联实体,除非您需要将数据与此关联关联起来。

否则,你只需这样做:

List<Tuple> result = query().from(QBook.book)
.innerJoin(QBook.book.author, author)
.select(QBook.book, QAuthor.author)
.fetch();

这相当于以下 JPQL:

SELECT book, author FROM Book book INNER JOIN book.author author

关于java - 如何创建 QClass ,没有实体或与 QueryDSL 中的两个表关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62342331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com