我面临的问题是一对一的惰性加载在Hibernate中不起作用。我已经解决了,但还是不明白会发生什么。
我的代码(懒惰加载在这里不起作用,当我拉person-address也被提取):
@Entity
public class Person{
@Id
@SequenceGenerator(name = "person_sequence", sequenceName = "sq_person")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "person_sequence")
@Column(name = "id")
private long personID;
@OneToOne(mappedBy="person", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
private Adress address;
//.. getters, setters
}
@Entity
public class Address {
@Id
@Column(name="id", unique=true, nullable=false)
@GeneratedValue(generator="gen")
@GenericGenerator(name="gen", strategy="foreign", parameters=@Parameter(name="property", value="person"))
private long personID;
@PrimaryKeyJoinColumn
@OneToOne
private FileInfo person;
}
但是:如果我在OneToOne关系中添加optional=false
,那么惰性加载工作很好!
@OneToOne(mappedBy="person", cascade=CascadeType.ALL, optional = false, fetch = FetchType.LAZY)
private Adress address;
问题/恳求:请给我解释一下optional=false
注释如何帮助实现延迟加载。
附注。我看过post1和post2,明白了为什么简单的OneToOne不能偷懒,但我还是不能掌握optional=false
的魔力。
如果关联是可选的,则Hibernate在不发出查询的情况下无法知道给定人员的地址是否存在。因此它不能用代理填充地址字段,因为可能没有引用该人员的地址,并且它不能用null
填充,因为可能有引用该人员的地址。
当您将关联设置为强制性(即optional=false
)时,它信任您并假定存在地址,因为关联是强制性的。因此它直接用代理填充地址字段,知道有一个地址引用了这个人。
问题内容: 我遇到了 一个 问题,即 一对一的延迟加载 在hibernate状态下不起作用。我 已经解决了它 ,但仍然 无法 正确 理解 会发生什么。 我的代码( 延迟加载在这里不起作用 ,当我拉人时-地址也被获取): 但是 :如果我添加 OneToOne关系,则延迟加载 效果很好 ! 问题/完整性: 请向我解释注释如何帮助实现延迟加载。 PS 我已经阅读了post1和post2的帖子,并了解了为
当执行session . create query(" from Author ")时。list();即使关系被标记为optional=false,fetch type = lazy from Author- Hibernate:选择author0_。作者ID为作者I1 0,作者0。电子邮件为email2_0_,author0_。名为name3_0_ from AUTHOR author0_ Hi
问题内容: 我正在使用Spring + Hibernate。我所有的HibernateDAO都直接使用sessionFactory。 我有应用程序层->服务层-> DAO层,所有集合都被缓慢加载。 因此,问题在于,有时在应用程序层(包含GUI / swing)中,我会使用服务层方法(包含@Transactional批注)加载实体,并且我想使用此对象的惰性属性,但忽略了会话已经关闭。 解决此问题的最
问题内容: 如果实体A具有与实体B的双向一对一或零对一映射。 映射如下: 和 当我对EntityA进行hql查询(或更确切地说,是命名的hql查询)时,hibernate会急切地用单独的select语句加载EntityA#propertyB。 我的问题是,如果我的hql返回1000个EntityA(所有人都有各自的EntityB),hibernate将执行n + 1个查询(第一个查询是针对Enti
本文向大家介绍Mybatis一对一延迟加载实现过程解析,包括了Mybatis一对一延迟加载实现过程解析的使用技巧和注意事项,需要的朋友参考一下 需求:用户和账户一对一关系,查询账户时实现用户的延迟加载 思路:根据id查询,需要延迟加载的一方 1、用户实体类 2、账户实体类 3、用户持久层接口 4、账户持久层接口 5、全局配置文件 6、用户映射配置文件 7、账户映射配置文件 以上就是本文的全部内容,
描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l