java - @ManyToOne 和@BatchSize

标签 java hibernate hibernate-mapping hibernate-annotations

我在一些旧代码中发现了奇怪的东西(至少对我而言)。

注解为@ManyToOne 的字段也被注解为@BatchSize

我一直认为 @BatchSize 注释只影响在类级别或集合上注释时 (@OneToMany) 并影响预取 迭代时。

但也许我错了,用 @BatchSize 注释 @ManyToOne 会影响某些事情。我在文档中找不到答案。

@BatchSize 注释 @ManyToOne 有意义吗?

最佳答案

我认为这个问题是指在同一字段上组合 @ManyToOne@BatchSize,例如:

@ManyToOne
@BatchSize(size = 5)
private User owner;

Hibernate 不支持这个用例,至少在使用注解时是这样。 documentation 提到的批量获取的唯一用途是:

  • 在集合字段上,即 @OneToMany@ManyToMany(但不是 @ManyToOne)<
  • 关于要获取的实体类

例如:

@Entity
@BatchSize(size = 5)
public class User {
  ...
}

后一种情况可以对所有用户类型的关系进行批处理,包括多对一关系。但是,使用实体类上的注释无法逐个字段地控制行为。

在 Hibernate 源代码中搜索 @BatchSize 的所有用法,确认缺乏对您的用法的支持。从我在 AnnotationBinder.java 中看到的,@BatchSize 注释仅在实体类和具有某种 @XxxToMany 注释的字段上进行检查。

关于java - @ManyToOne 和@BatchSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13048436/

相关文章:

java - 为什么Java中没有全局变量?

java - 如何更新数据库行

java - 如何在 hibernate 3 中映射派生身份?

java - 如果通过删除整个映射关系来更改 hbm.xml 文件,是否仍然可以使用 Hibernate 标准?

java - 外部实体更改后索引不更新

java - Eclipse:作为项目构建器的 Java 应用程序

java - ProcessBuilder:如果没有 "redirectOutput",进程就无法完成

java - 如何使用selenium选择自定义下拉列表元素

java - Spring @Transactional 在 Hibernate 中产生问题

java - Hibernate @Enumerated 映射