Как связать поле с третьей таблицей в JPA - PullRequest
0 голосов
/ 26 июля 2010

У меня есть 3 таблицы:

объект с идентификатор_объекта и имя_поля

object_form с object_id и form_id

и object_fields с form_id и field_desc

Так что я могу получить все объекты с полевыми именами, но мне нужно получить field_desc. В 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?

Ответы [ 2 ]

0 голосов
/ 26 июля 2010

Это немного нелогично, но это, вероятно, лучше всего отображать, используя @ManyToMany отображение.

Учтите, что ваша структура таблицы соответствует ситуации, когда данный form_id связан с более чем одним object_id, и наоборот. Даже если ваша бизнес-логика запрещает это, это модель отношений.

Проверьте эту статью и этот пример кода о том, как это сделать. Трудно привести конкретный пример, поскольку вы ничего не рассказали нам о своей модели класса.

0 голосов
/ 26 июля 2010

Возможно использование однонаправленного отображения отношений один ко многим.

Надеюсь, это поможет.RG

@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;

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...