这就是我想要做的。
班级家长
@OneToOne(mappedBy = "parent", cascade = CascadeType.ALL)
public Child getChild()
班级儿童
@OneToOne(fetch = FetchType.LAZY)
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name="parent_id")
public Parent getParent()
我的第1、3、4 点 完全正常工作,而 第5点则 部分正常工作,仍然需要解决如何翻译更新部分indo DDL。
第2点 是这里的大问题,对于我目前的解决方案,父级不会延迟加载子级。但是,子级确实会延迟加载父级,但是反转注解会使级联混乱( 第3、4和5点
)。
我现在非常困惑,希望我错过了一些明显的事情,因此对您的帮助将不胜感激。
编辑: Adeel Ansari要求的代码
‘fetch = FetchType.LAZY’已添加到类Parent中,否则与上面相同。
IParentDAO parentDAO = DAOFactory.getFactory().getParentDAO();
parentDAO.beginTransaction();
//findByPrimaryKey uses 'org.hibernate.Session.get(Class clazz, Serializable id)'
parentDAO.findByPrimaryKey(1l);
parentDAO.commitTransaction();
产生的hibernate查询,一个获取父对象和一个获取子对象:
Hibernate: select parent0_.id as id0_0_ from parents parent0_ where parent0_.id=?
Hibernate: select child0_.id as id1_0_, child0_.parent_id as parent2_1_0_ from childs child0_ where child0_.parent_id=?
这是findByPrimaryKey的代码:
public class HibernateParentDAO extends HibernateDAO<Parent, Long> implements IParentDAO {
public HibernateParentDAO() {
super(Parent.class);
}
}
public abstract class HibernateDAO<T, ID extends Serializable> implements IGenericDAO<T, ID> {
private Class<T> persistentClass;
public HibernateDAO(Class<T> c) {
persistentClass = c;
}
@SuppressWarnings("unchecked")
public T findByPrimaryKey(ID id) {
return (T) HibernateUtil.getSession().get(persistentClass, id);
}
}
我一直有一个类似的问题。有几种不同的解决方案,但所有解决方案都可以。
简短的答案是:Hibernate不支持懒惰的一对一关系。
长答案(解决方法)是:
将关系声明为一侧(孩子)一对一,另一侧(父母)一对多。因此,a parent.getchild()
返回一个集合,但是它将能够使用延迟加载。
您可以尝试让父级和子级共享主键,但这将需要您更改架构。
您可以尝试在数据库中配置一个反映这种一对一关系的视图。
描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l
问题内容: 我在JPA实体中的延迟加载属性有问题。我读过许多类似的问题,但它们与spring或hibernate有关,并且他们的后代不适用或没有帮助。 该应用程序是在Wildfly应用程序服务器上运行的JEE和JPA2.1。有两个实体,DAO会话bean和servlet将它们放在一起: 当我运行此代码时,它失败并显示: 我对WebLogic / JPA1使用了非常相似的模式,并且运行平稳。任何的想
问题内容: 我想知道在node.js中使用是否等效于延迟加载? 例如,如果我有一个函数需要代码中其他任何地方都不需要的特定node.js包,那么我最好在该函数内部使用它,以便仅在调用该函数时才包含所需的包。 我还不确定是否会由于缺乏对node.js架构的了解而在性能方面有所改善?我想它每次与服务器的连接都会使用更少的内存。但是,当它必须读取程序包时,它会增加磁盘的I / O吗,还是将其添加到内存中
这是从这里开始的后续行动。 我正在实现一个表,它将数据异步加载到表单元格中。问题是,表单元格有时无法正确更新。有时它会以某种方式“挂起”并永远显示“加载...”。实际值只有在我在表中滚动一点时才会更新。 要复制,请在表格中快速向下滚动应用程序。某些单元格不会显示“延迟加载”值,而是显示占位符字符串。 延迟加载属性如下所示: } 应用程序如下所示: 完整的可运行代码可以在这里找到。
有很多关于“懒惰”的例子和文档。也许我没有明白,但为什么要用它呢?实例化bean成本
使用最新的jstree。我可以加载所有节点,但现在我正在尝试延迟加载节点。当我展开最后一个可见节点时,不会生成GET。 .js 从初始调用返回的JSON数据是[{"state":{"open": true,"禁用": false,"选择": false},"id":"-100","text":"Node1 Text","子":[{"state":{"open": false,"禁用": false