如何在JPA中获得由第三个表连接的字段

如何在JPA中获得由第三个表连接的字段,jpa,Jpa,我有三张桌子: 对象带有对象id和字段名 对象形式带有对象id和形式id 和带有表单id的对象字段和字段描述 因此,我可以获取所有具有字段名称的对象,但我需要获取字段名称。在SQL中,它类似于: select o.object_id, f.field_desc from object o, object_form of, object_fields f where o.object_id = of.object_id and of.form_id = f.form_id 我如何在JPA中做到

我有三张桌子:

对象带有对象id字段名

对象形式带有对象id形式id

和带有表单id的对象字段字段描述

因此,我可以获取所有具有字段名称的对象,但我需要获取字段名称。在SQL中,它类似于:

select o.object_id, f.field_desc 
from object o, object_form of, object_fields f
where o.object_id = of.object_id
and of.form_id = f.form_id

我如何在JPA中做到这一点

可能使用单向一对多关系映射

希望这有帮助。 RG

@实体
@表(name=“OBJECT”)
公共类MyObject
{
@身份证
@列(name=“OBJECT\u ID”)
私有int-id;
@列(name=“FIELD\u name”)
私有字符串字段名;
@独身癖
@JoinTable(name=“OBJECT\u FORM”,
joinColumns=@JoinColumn(name=“OBJECT\u ID”),
inverseJoinColumns=@JoinColumn(name=“FORM_ID”))
私有收集对象字段;
...
}
@实体
@表(name=“OBJECT\u字段”)
公共类MyObjectField
{
@身份证
@列(name=“FORM\u ID”)
私有int-id;
@列(name=“FIELD\u DESC”)
私有字符串字段描述;
...
}

这有点违反直觉,但最好使用
@manytomy
映射

考虑到您的表结构适应了给定的
表单id
与多个
对象id
关联的情况,反之亦然。即使您的业务逻辑禁止这样做,这也是关系的模型


查看并了解如何执行此操作。很难给出一个具体的例子,因为你没有告诉我们你的类模型。

因为这个问题是关于JPA的,所以描述你的对象模型会很有帮助。你需要停止思考表格,开始思考对象。请提供您的对象模型(以及映射)。
@Entity
@Table(name="OBJECT")
public class MyObject
{
    @Id
    @Column(name="OBJECT_ID")
    private int id;

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

    @OneToMany
    @JoinTable(name="OBJECT_FORM",
        joinColumns=@JoinColumn(name="OBJECT_ID"),
        inverseJoinColumns=@JoinColumn(name="FORM_ID"))
    private Collection<MyObjectField> objectFields;

    ...
}

@Entity
@Table(name="OBJECT_FIELDS")
public class MyObjectField
{
    @Id
    @Column(name="FORM_ID")
    private int id;

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

    ...
}