如何在JPA中获得由第三个表连接的字段
我有三张桌子: 对象带有对象id和字段名 对象形式带有对象id和形式id 和带有表单id的对象字段和字段描述 因此,我可以获取所有具有字段名称的对象,但我需要获取字段名称。在SQL中,它类似于:如何在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中做到
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;
...
}