java - Hibernate映射一个类到两个表(两个表多对一关系)

标签 java spring hibernate jpa

我使用的是 Hibernate 4.3.6
我有一个名为 StudyCase 的实体,与数据库中名为 StudyCase 的表进行映射 ,我还得到了另一个实体名称Measurement,它与数据库中名为Measurement的表进行了映射。每个 StudyCase 对象都可以与许多Measurement 对象相关联,问题是这样的。 我想将两个表映射到一个名为 mergedEntity 的新实体中,并使用两个表中的 clumns 对其进行查询,结果将是与具有相同约束的测量对象具有一对一关系的对象列表,但也会分配它们所属的 StudyCase 对象的信息。

我在 spring jpa 中做了一些类似的工作:

public List<MergeObject> searchMeasurement(String actualConditions)
{   
    jdbcTemplate = new JdbcTemplate(dataSource);
    String sql = "select  *  from Measurement  INNER JOIN StudyCase ON Measurement.study_case_number=StudyCase.study_case_number where "+actualConditions  ;
    List<MergeObject> result =  this.jdbcTemplate.query(sql, new BeanPropertyRowMapper<MergeObject>(MergeObject.class)) ;

    return result ; 
}

有什么方法可以使用 hibernate 实现同样的事情吗? 谢谢 !

最佳答案

使用 Hibernate 文档所说的,你必须这样做

@Entity
public class Troop {
    @OneToMany(mappedBy="troop")
    public Set<Soldier> getSoldiers() {
    ...
}

@Entity
public class Soldier {
    @ManyToOne
    @JoinColumn(name="troop_fk")
    public Troop getTroop() {
    ...
}           

这建立了双向关系

关于java - Hibernate映射一个类到两个表(两个表多对一关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29702102/

相关文章:

java - Spring JPA 存储库最近日期

java - 如何在java中进行整数枚举声明

java - 撰写消息错误。 "Before start of ResultSet."

java - 下载 Eclipse 源代码

java - 没有 Sentinel 连接,Spring Boot 和 Spring Data Redis 无法启动

java - Spring中@Transactional的正确使用

java - 如何让OpenSessionInViewFilter排除静态资源

spring - 我可以通过 Tomcats web xml (../webapps/WEB-INF/web.xml) 初始化 Spring 吗?

java - GCC 编译通过。 Java API

java - eclipse中找不到Pivotal tc server的安装目录