gpt4 book ai didi

Java/Hibernate : How to detect, 如果字段是延迟加载代理而不是实际数据?

转载 作者:搜寻专家 更新时间:2023-11-01 02:12:27 25 4
gpt4 key购买 nike

我正在将我的实体转换为 DTO,我想将 NULL 设置为所有字段的 DTO 值,这些字段是延迟加载且未初始化的(因为我不想一直传输所有数据)。

我试过:

if (!(entity.getNationality() instanceof HibernateProxy))
this.setNationalityFromEntity(entity.getNationality());

但这似乎并没有帮助。欢迎提出任何建议!

谢谢!

最佳答案

我们在我们的实体中这样做的方式是我们有 boolean 方法,这些方法以不会触发延迟加载的方式进行检查。例如,如果我们的实体有一个名为“associatedSomething”的关联实体,那么检查该关联实体是否已延迟加载的方法将是:

    public boolean isAssociatedSomethingLoaded() {
if (associatedSomething instanceof HibernateProxy) {
if (((HibernateProxy)associatedSomething).getHibernateLazyInitializer().isUninitialized()) {
return false;
}
}
return (getAssociatedSomething() != null);
}

注意:重要的是不要在检查中使用 getAssociatedSomething(),因为这可以确保关联的实体在检查期间不会延迟加载。

关于Java/Hibernate : How to detect, 如果字段是延迟加载代理而不是实际数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com