JPA Аннотация вопрос - PullRequest
       1

JPA Аннотация вопрос

0 голосов
/ 03 августа 2011

У меня есть Таблица A, Таблица AB, ТАБЛИЦА B, Таблица AB имеет ссылки на внешние ключи к Таблице A и Таблице B. Между Таблицей A и Таблицей AB существует отношение один к одному, а между таблицей B и многими к одномуТаблица АВ.

Мой вопрос: если я сохраняю домен для таблицы B, он сохраняет данные в таблице AB, но не в A? Пожалуйста, дайте мне знать, если это ожидаемое поведение, или я могу просто сохранить все данные во всех других таблицахвызвав save на объекте B

Class A
{
    @OneToOne(mappedBy="abpk.a")
    @Cascade({ org.hibernate.annotations.CascadeType.ALL,
               org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
    private AB ab;
}

@Entity
@AssociationOverrides({
@AssociationOverride(name = "abpk.a", joinColumns = @JoinColumn(name = "colA", referencedColumnName = "colA")),
@AssociationOverride(name = "abpk.b", joinColumns = @JoinColumn(name = "Colb", referencedColumnName = "colB")) })
Class AB
{
    ABPK abpk = new ABPK();
    A a;
    B b;

    //inner class
    class ABPK
    {
       A a;
       B b;

       @OneToOne(fetch = FetchType.LAZY)
       @Cascade({ org.hibernate.annotations.CascadeType.ALL, 
                  org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
       @JoinColumn(name="b")
       //Getter for A
       GetA();

       @ManyToOne(fetch = FetchType.LAZY)
       //Getter for B
       GetB();
     }
}

Class B
{
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "abpk.b")
    @Cascade({ org.hibernate.annotations.CascadeType.ALL,
               org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
    private List<AB> abList;
}

1 Ответ

0 голосов
/ 03 августа 2011

Это зависит от того, как вы установили свои каскадные политики.Если вы установили для него значение CASCADE_TYPE ALL, то теоретически оно должно сохраняться.

Но в любом случае лучше связать обе стороны отношений, когда вы пытаетесь сохранить ассоциации.

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