gpt4 book ai didi

hibernate - 我无法理解 HQL 连接

转载 作者:行者123 更新时间:2023-12-02 22:51:11 26 4
gpt4 key购买 nike

我开始使用 hibernate 。我对 HQL 连接感到非常困惑...它们与 mySQL 连接确实不同...事实上,如果我有两个像 Parking 和 Auto 这样的表,我会这样做:

select *
from Parking
left join on Parking.pid = Auto.parkingId

或者类似的东西。相反,在 hibernate 状态下,我将有一个已链接到 Auto 的 Parking 类,并映射所有关联。所以连接会被hibernate自动解析。无论如何,我仍然有 join 关键字,但在示例中它以我不理解的方式使用,通常在 from 子句中指定对象的属性......这是什么意思?该操作的 SQL 等效项是什么?

最佳答案

重要的是要记住,HQL 讨论的是类和字段,而 SQL 讨论的是表和列。

如果您指定关联,hibernate 将自动为您执行连接。想象一个包含书籍列表的类库。每本书都在一个图书馆中。

@Entity public class Library {
@OneToMany(mappedBy"library")
public List<Book> getBooks() {
return books;
}
...
}

@Entity public class Book {
@ManyToOne
public Library getLibrary() {
return library;
}
...
}

然后,您可以使用 hibernate 为您找到一个 Library 对象,并且不需要指定任何连接。它只知道要做什么(尽管如果您提供更多详细信息,通常可以帮助它提高性能)。

Library library = entityManager.find(Library,1);
for (Book book : library.getBooks()) {
System.out.println("Found book: " + book.toString());
}

根据我的经验,使用 hibernate 根本不需要使用“join”就可以完成很多工作!

有关注释的更多详细信息,请访问 http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/

关于hibernate - 我无法理解 HQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100300/

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