@Entity
public class Parent{
@Id
private Long id;
@OneToMany(mappedBy = "parentId", fetch = FetchType.LAZY)
private Set<Child> children;
}
我想在服务类和当前实现中的两个功能如下:
>
获取父级时“children”应为null
public Parent getParent(Long parentId){
return repo.findOne(parentId);
}
获取父级时应填写“children”:
public Parent getParentWithChildren(Long parentId){
Parent p = repo.findOne(parentId);
Hibernate.initialize(p.children);
return p;
}
@RequestMapping("/parent/{parentId}")
public Parent getParent(@PathVariable("parentId") Long id)
{
Parent p= parentService.getParent(id);//ok till here
return p;//error thrown when converting to JSON
}
如果您希望根据用例允许相同域模型的不同JSON表示,那么您可以查看以下内容,这些内容将允许您在不需要DTO的情况下这样做:
https://spring.io/blog/2014/12/02/latest-jackson-integration-informings-in-spring
或者,请参见下面的“Spring Data Rest中的投影”部分
我是Spring框架的新手,我知道Spring在启动时会实例化单例bean的默认行为,称为热切实例化。这是一个很好的行为,因为它只在启动时暴露bean实例化中的任何问题。但有时这种行为是不可预料的,因此通过向bean定义中添加lazy init=“true”,可以将实例化推迟到第一个请求。 所以,我想知道我们可以使用什么样的场景来延迟实例化bean?。请举例说明。
我正在寻找一种方法来检索替代单声道,以防原始单声道是空的。我找到的最接近的是,但我的问题是,我无法将lambda表达式传递给它,因此即使Mono具有非空值,也会调用它。这有点像vs。 以下是一个示例:
在Spring中,可以将bean配置为懒洋洋地初始化。Spring批处理作业也是(Spring管理的)bean。也就是说,当我配置类似于
在我看来,这需要一种新类型的Spring ApplicationContext,它支持“热”刷新,但只是为了添加新的bean定义。先前存在的bean定义不会被移除/重新加载,也不会在随后的refresh()调用中由BeanFactoryPostProcessors重新处理,并且先前存在的单例不会被销毁! 这已经存在了吗?。有没有我忽略的更好的解决方案?
我尝试用java-hibernate-spring实现一个服务器REST,它返回一个JSON。 我有一个多对多关系图。 我解释得更好,我有一个供应商,有一个配料列表,每种配料都有一个供应商列表。 我创建了这个表: 然后我有配料模型: 然后我有供应商模型: 服务 供应对象 和IdAbstractObject “无法写入JSON:未能懒洋洋地初始化Role:myPackage.Comprigue.Co
当我试图懒洋洋地读取子实体列表时,我(断断续续地)得到了这个错误。 关于这个错误,我已经浏览了一个关于SO的帖子列表。我所能找到的就是执行EAGER fetch或使用属性。我不想做任何一个,因为他们是反模式。 我使用的是spring-data-jpa。这是一个spring-boot项目。请求来自web层(Rest控制器)