Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 可以停止jpa中的连接吗?_Hibernate_Rest_Jpa - Fatal编程技术网

Hibernate 可以停止jpa中的连接吗?

Hibernate 可以停止jpa中的连接吗?,hibernate,rest,jpa,Hibernate,Rest,Jpa,我在实体类中定义了联接。当我执行查询时,连接实体也会返回 是否可以停止这些联接,或者它们是否总是发生?在某些情况下,我希望停止它们的发生,以便不在传输对象中传输不必要的关联实体。或者,这种做法只是为了转移对象而剥离所需的内容 谢谢如果您不需要在每个请求上获取所有连接实体,您可以使用延迟获取。 此获取参数可以选择性地添加到注释:@Basic、@OneToMany、@ManyToOne、@OneToOne和@ManyToMany e、 g.@ManyToOne(fetch=FetchType.LAZ

我在实体类中定义了联接。当我执行查询时,连接实体也会返回

是否可以停止这些联接,或者它们是否总是发生?在某些情况下,我希望停止它们的发生,以便不在传输对象中传输不必要的关联实体。或者,这种做法只是为了转移对象而剥离所需的内容


谢谢

如果您不需要在每个请求上获取所有连接实体,您可以使用延迟获取。 此获取参数可以选择性地添加到注释:@Basic、@OneToMany、@ManyToOne、@OneToOne和@ManyToMany

e、 g.
@ManyToOne(fetch=FetchType.LAZY)


通过设置FetchType.LAZY,在显式访问这些字段之前,您不会从数据库中检索所有这些合并字段

更好的方法是创建一个新的传输对象并从数据库中获取该对象。因此,对于EG:如果有人类,并且需要一些属性来传输,请考虑执行下面的

最初的Person类看起来像

Class Person {
    private String firstName;
    private String lastName;
    Private Set<User> users
}
现在您可以将查询编写为

Select new PersonDTO(firstName, lastName) from Person p;
注意:Persondo中相应的构造函数很重要


希望这有帮助

谢谢。当我检查集合时,关联的对象没有被加载,但是当我将集合添加到响应实体时,我认为它一定是在自动访问关联的实体,因为响应仍然返回所有内容。我是否必须显式设置一个传输对象,并使用BeanUtils.Copy之类的东西来阻止这种情况发生?再次感谢。这可能是一个解决方案。如果您在应用程序的任何一点上都不使用链接实体,那么您可能会忽略相关JPA实体Bean中不需要的属性。您将如何扩展此模式以处理更多字段?继续向构造函数添加所需的字段似乎不合适。
Select new PersonDTO(firstName, lastName) from Person p;