有没有办法指定在hibernate / JPA @ManyToOne中急切获取的唯一字段--FetchType.EAGER?
类似的东西:
@ManyToOne(fetch=FetchType.EAGER, eagerFields={"id","name"})
private Company company;
答案 0 :(得分:0)
JPA 2.0规范未定义您尝试实现的可能性,因为@ManyToOne
注释定义如下(请参阅section 11.1.26 of the JPA 2.0 specification):
public @interface ManyToOne {
Class targetEntity() default void.class;
CascadeType[] cascade() default {};
FetchType fetch() default EAGER;
boolean optional() default true;
}
如果为懒惰加载的@Basic(fetch = FetchType.LAZY)
实体的字段指定Company
,则可以执行仅为选定字段实现急切加载的操作; 但不鼓励关联字段以外的字段,因为它取决于提供程序实现的优点,如以下摘录所示:
EAGER策略是持久性提供程序运行时的一项要求,数据必须是热切的 牵强。 LAZY策略提示应该获取数据的持久性提供程序运行时 第一次访问时懒洋洋地说。允许实现急切地获取数据 已经指定了LAZY策略提示。特别是,延迟提取可能仅适用于Basic 使用基于属性的访问的映射。