java spring引导存储库未返回真实实体
我有一个包含继承的实体,它类似于本文中构建的:http://blog.netgloo.com/2014/12/18/handling-entities-inheritance-with-spring-data-jpa/
我的抽象基类是Promotion,而a子类是schodmentpromotion
在映射器函数中,我调用以下代码:
Promotion promotion = promotionRepository
.findById(source.getPromotion().getId())
.orElseThrow(() -> new BadRequestException("Invalid Promotion"));
现在,促销变量不是有效的产品组合促销,如下图所示。另外promotion instanceof AssortmentPromotion
返回false
你知道我该怎么做才能得到一个真正的物体吗
# 1 楼答案
Hibernate使用javassist来增强和代理实体类。这主要是针对相关实体(@ManyToOne,@OneToOne)的延迟加载“魔力”
有许多文章介绍了如何实现这一点,以及如何取消固定此类实体: https://vladmihalcea.com/how-does-a-jpa-proxy-work-and-how-to-unproxy-it-with-hibernate/
http://docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/Hibernate.html#unproxy-java.lang.Object-