繁体   English   中英

如何在休眠状态下将实体属性映射到继承SINGLE_TABLE的实体?

[英]How to map entity property to entities of inheritance SINGLE_TABLE in hibernate?

我具有继承类型为SINGLE_TABLE的实体层次结构:

@Entity  
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)  
@DiscriminatorValue("junioruser")  
@DiscriminatorColumn(name = "dtype", discriminatorType = DiscriminatorType.STRING)  
.........  
public class JuniorUser  { 

问题是如何将此JuniorUser实体及其所有子类映射为Answer实体中的属性,如下所示:

@Entity  
public class Answer  {  
private JuniorUser user;  
.......................... 

如果不可能,那么我如何使用休眠4映射到JuniorUser或JuniorUser本身的Answer实体正确子类中的Answer属性?

更新:我这样做是为了检索Answer和关联的用户:

Answer answer = sessionFactory.getCurrentSession().get(entityClass, id);

询问相关用户的规范名称

answer.getUser().getClass().getCanonicalName();

给出com.javahelp.domain.impl.JuniorUser_$$_javassist_3
接下来询问属性dtype的值,它会给出'junioruser'。 最后一件事是此用户的所有其他属性为null,包括user_id属性。
我本人看到,对于检索到的答案,我有相关的用户,其dtype为“ expertuser”

谢谢!

这里的主要问题是误解了获取类型。

FetchType.EAGER表示在一次选择中加载父对象时从数据库加载相关的实体属性。 创建相关实体的新实例,并将从数据库获取的所有值分配给它的属性。 相关实体本身也被分配给父实体的属性。

FetchType.LAZY表示从数据库中加载父对象时,将创建此类相关实体的代理,并将代理分配给父实体属性。 为了获得延迟加载的相关实体的任何值,需要调用其代理的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM