我创建了两个实体Book
并且Book_Category
具有一对多关系。当我发出时BookCategoryRepository.findAll()
,我希望hibernate状态使用“
INNER JOIN”查询。但是它只是发出查询以从Book_Category获取数据。
我缺少什么?我该怎么做使hibernate问题的JOIN查询?
Book.java
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "book_category_id")
private BookCategory bookCategory;
}
BookCategory.java
@Entity
@Table(name = "book_category")
public class BookCategory {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
@OneToMany(mappedBy = "bookCategory", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Book> books;
}
BookCategoryRepository.java
public interface BookCategoryRepository extends JpaRepository<BookCategory, Integer> {
}
bookCategoryRepository.findAll()
默认情况下,Hibernate使用第二个查询来检索子集合。原因之一是适当的限制查询。否则,如果至少有一个以上的子对象,则结果集中的行将比1边的实体多。
有一个注释可以更改hibernate状态下的此行为,该注释将被Spring Data
Jpa存储库忽略。注释为@Fetch(FetchMode.JOIN)
。如果确实需要此行为,则可以考虑FetchMode如何在Spring DataJPA中工作
我创建了两个具有一对多关系的实体和。当我发布,我希望hibernate使用“内部联接”查询。但它只是发出了从Book_类别获取数据的查询。 我错过了什么?我应该怎么做才能使hibernate问题加入查询? 书JAVA 图书分类。JAVA epository.java
问题内容: 似乎要合并两个或多个表,我们可以使用join或where。一个相对于另一个的优点是什么? 问题答案: 任何涉及多个表的查询都需要某种形式的关联,以将结果从表“ A”链接到表“ B”。传统的(ANSI-89)方法是: 在FROM子句中列出逗号分隔列表中涉及的表 在WHERE子句中编写表之间的关联 FROM TABLE_A a, TABLE_B b WHERE a.id = b.id 这是
问题内容: 我有一个配置单元表,该配置表按年,月,日和小时划分。我需要对其执行查询以获取最近7天的数据。这是在。我的查询当前看起来像这样: 这需要很长时间。当我用上面的实际数字代替时,请说: 它会在几分钟内完成。有什么办法可以更改上面的脚本,以便实际上只包含查询中的数字而不是函数? 我尝试使用像: 但这不能解决问题。 问题答案: 解决方案 原始查询出了什么问题? unix_timestamp()
问题内容: 我可以在网上(在Stack Overflow上以及其他方面)找到大量有关使用Python或在Python中进行连接是一种非常低效且不好的做法的信息。 我似乎找不到为什么效率如此低下。在这里没有提到“在某些情况下已针对20%的改进进行了优化”(仍然不清楚这些情况是什么),我找不到任何其他信息。 在比其他Python串联方法更好的技术水平上发生了什么? 问题答案: 假设您有这段代码可以从三
问题内容: 我刚刚在Oracle中遇到了一个奇怪的行为,我希望它会提高ORA-00918,但事实并非如此。以该查询为例。 此查询从概念上讲是在查找具有禁用触发器的表的详细信息,但是请注意,这不是我要解决的问题。这个问题不是该查询,数据字典,视图或表所独有的。据我所知,它适用于任何一组表或视图(我尝试过的两个或三个)。 无论如何,尝试运行此查询,你会得到ORA-00918,因为两者并有一个名为列,从
下面是我的代码。当我运行它时,我在线程“main”java.lang.IndexOutOfBoundsException:Index:3、Size:2中得到异常,而不是我的异常消息。谁能解释一下我做错了什么,为什么会这样?谢谢!