【问题标题】:How do I join two tables in hibernate and Spring如何在hibernate和Spring中加入两个表
【发布时间】:2012-09-20 07:47:40
【问题描述】:

如何在 hibernate 和 Spring 中加入两个表。下面是我的 suto java 代码,我需要在 objectA 上进行连接,其中 name 字段等于 objectB 中的 name 字段,但我将在 ObjectA ID 字段上进行搜索,但我需要返回。 ObjectA ID、ObjectA 名称、ObjectA 区域、ObjectB 地址。

//
// CLASS OBJECT A
//
@Entity
@Table(name = "tableA")
public class ObjectA {

    @Id
    @Column(name = "id")
    private String id; 

    @Column(name = "name")
    private String name; 

    @Column(name = "region")
    private String region; 

}

//
// CLASS OBJECT B
//
@Entity
@Table(name = "tableB")
public class ObjectB {

    @Id
    @Column(name = "id")
    private String id; 

    @Column(name = "name")
    private String name; 

    @Column(name = "address")
    private String address; 

}

谁能告诉我如何在 java 代码中做到这一点。

【问题讨论】:

    标签: java spring hibernate spring-webflow


    【解决方案1】:

    将此添加到您的 A 类中:

    @OneToOne
    @JoinColumn(name="name")
    private ObjectB objectB;
    

    这样当您检索 A 时,您将按名称进入相应的 B。

    【讨论】:

    • 它是如何知道ObjectA中的col和ObjectB中的col来匹配的
    • @techsjs2012 JoinColumn 表示要针对其他类的字段/列是“名称”。如果要双向关联,在B类的name字段上,必须加注解:@OneToOne(mappedBy="name") name对应A类的一个
    【解决方案2】:

    在 where 子句中使用带有条件的交叉连接来限制连接。这是我所知道的唯一一个好方法(除了原生 sql),当它们之间没有映射关系时,连接两个对象。

    您可以使用 hql 查询轻松完成此操作

    select a.id, a.name, a.region, b. address
    from ObjectA a, ObjectB b
    where a.id = b.id
    

    【讨论】:

      【解决方案3】:

      你也可以使用内连接
      选择 A.ID、A.Name、A.Regin、B.Address 从 ObjectA 作为 A 内连接 ObjectB 作为 B

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-27
        • 2018-08-21
        • 1970-01-01
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        相关资源
        最近更新 更多