java - Hibernate一对一映射不获取父类的子类数据

标签 java hibernate spring-mvc hibernate-annotations

我有两个表,第一个表包含 company_id、company_name 和国家/地区名称,第二个表包含公司相关详细信息以及一对一映射。

这是我的表结构:-

    company {
      company_id int,
      company_name varchar,
      country varchar
    }

    company_detail {
      id int,
      company_id int,
      company_description text,
      future_goal text
    }

POJO 中使用以下映射:-

在 POJO 公司:-

@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="COMPANY_ID")  
private CompanyDetails companyDetails;

在公司详细信息 POJO 中:-

@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="COMPANY_ID")  
public Company company;

但是当我获取公司对象时,它在 companyDetails 中包含 null。

以下代码用于获取公司对象:-

  Company company = (Company) session.get(Company.class, companyId);

我想要将 companyDetails 数据与公司数据一起获取。

我做错了什么吗? 需要更改哪些代码才能解决此问题。

最佳答案

使用双向 @OneToOne 关系(阅读 more info 了解它):

// in Company POJO:
@OneToOne(mappedBy="company", cascade=CascadeType.ALL, fetch = FetchType.EAGER)
private CompanyDetails companyDetails

// in CompanyDetails POJO:
@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="company_id")  
public Company company;

然后在获取 company 对象后,您可以获得其详细信息(因为 Company 已提交 CompanyDetails):

Company company = (Company) session.get(Company.class, companyId);
CompanyDetails details = company.getCompanyDetails();

关于java - Hibernate一对一映射不获取父类的子类数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40805889/

相关文章:

java - 带有 Joda-Time DateTimeFormatter 的属格(波兰语语言环境)月份名称

java - 如何用Configuration配置Hibernate+JPA?

java - 如何在 Spring 更新时显示 <input> 文本字段中的属性值?

java - 关于 java web session 处理如何工作的困惑。使用 servlet api 和 HttpSession 对象揭秘 Cookie 和 Header 的差异

java - Android 将字符串保存到数据库

java - 在java swing中同步滚动N个jtables

java - 这个java leetcode解决方案在最坏的情况下使用二次时间吗?

hibernate - 序列问题为什么在使用 hbm2ddl 生成架构时两个实体共享相同的序列?

spring - 如何在 Spring 中将对象添加到应用程序范围

在 Spring 应用程序中找不到 CSS 文件