Java 方法在Hibernate中加载惰性字段
冬眠。我有一个懒惰的领域类。我从db中获取一个实体而不加载它,但是当我使用entity.toString()时,这个字段是由JPA加载的。如何避免这种行为?如果某个字段为null,我只想得到null。如果您使用Hibernate,您可以检查该字段是否未初始化:Java 方法在Hibernate中加载惰性字段,java,jpa,lazy-loading,Java,Jpa,Lazy Loading,冬眠。我有一个懒惰的领域类。我从db中获取一个实体而不加载它,但是当我使用entity.toString()时,这个字段是由JPA加载的。如何避免这种行为?如果某个字段为null,我只想得到null。如果您使用Hibernate,您可以检查该字段是否未初始化: Hibernate.isInitialized(myproperty) 在toString()实现中使用此方法。如果使用Hibernate,可以检查字段是否未初始化: Hibernate.isInitialized(myproperty
Hibernate.isInitialized(myproperty)
在toString()实现中使用此方法。如果使用Hibernate,可以检查字段是否未初始化:
Hibernate.isInitialized(myproperty)
在toString()实现中使用此方法。我认为这是因为您重新定义了toString()方法并包含了惰性字段。我有一段令人震惊的历史。您需要在没有这些字段的情况下重新定义toString()方法。我认为这是因为您重新定义了toString()方法并包含了惰性字段。我有一段令人震惊的历史。您需要在没有这些字段的情况下重新定义toString()方法。是否
toString()
访问该字段?是。如果字段为null,我希望得到null。String.valueOf(field)
将为您提供null。我的意思是,从db加载实体后,如果没有惰性字段,我希望使用entity.toString()并得到null。但jpa正在加载它。我理解这是默认行为。但我想避免它。“jpa”没有任何作用;你的jpa提供商有,哪一个?。并且仅当对象仍处于“托管”状态时。toString()
是否访问该字段?是。如果字段为null,我希望得到null。String.valueOf(field)
将为您提供null。我的意思是,从db加载实体后,如果没有惰性字段,我希望使用entity.toString()并得到null。但jpa正在加载它。我理解这是默认行为。但我想避免它。“jpa”没有任何作用;你的jpa提供商有,哪一个?。只有当对象仍然处于“管理”状态时。当然,但是>70%的用户使用Hibernate,所以我假设情况也是如此。对。我正在使用Hibernate。这正是我想要的。非常感谢你。最后一个问题。您认为,在entity.toString()方法中使用Hibernate.isInitialized(myproperty)是一种正常的做法吗?否。并且您的案例在未初始化时显示null是错误的信息。您应该记录类似“未初始化”的内容,因为null表示未设置属性(例如数据库中的null)。对不起,我不清楚。当您说“不”时,您的意思是最好不要在entity.toString()中使用它?或者你的意思是这是正常的,但我应该只记录“未初始化”而不是null?两者都有。为什么需要toString()?当然可以,但超过70%的用户使用Hibernate,所以我认为情况也可能如此。对。我正在使用Hibernate。这正是我想要的。非常感谢你。最后一个问题。您认为,在entity.toString()方法中使用Hibernate.isInitialized(myproperty)是一种正常的做法吗?否。并且您的案例在未初始化时显示null是错误的信息。您应该记录类似“未初始化”的内容,因为null表示未设置属性(例如数据库中的null)。对不起,我不清楚。当您说“不”时,您的意思是最好不要在entity.toString()中使用它?或者你的意思是这是正常的,但我应该只记录“未初始化”而不是null?两者都有。为什么需要使用字符串()?