Изменить таблицу соединений другой сущностью в спящем режиме - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть 2 объекта: Персона и Телефон (отношения один-ко-многим).Я хочу использовать JoinTable:

class Person

    @OneToMany()
    @JoinTable(name="PERSON_PHONES", 
            joinColumns={ @JoinColumn(name="PERSON_ID") },
            inverseJoinColumns={ @JoinColumn(name="PHONE_ID") })
public List<Phone> getPhones(){...}

Но по какой-то причине я не могу использовать JoinTable, поэтому мне нужно написать класс PersonPhone.Я сомневаюсь в отношениях, может ли это быть так?

Person -> PersonPhone: один-ко-многим двунаправленный PersonPhone -> Телефон: один-к-одному однонаправленный

И еще один вопрос, еслиЯ определяю следующие правила каскада:

class Person {

@OneToMany(cascade=CascadeType.ALL,mappedBy="person")
public List<PersonPhone> getPersonPhones() {...}
...
}

class PersonPhone {

@OneToOne(cascade=CascadeType.ALL)
public Phone getPhone(){...}
...
}

// class phone has not fields for this relation

будут ли телефоны для человека удаляться при удалении человека?

1 Ответ

2 голосов
/ 03 ноября 2011

Непонятно, почему вы не можете использовать объединяющую таблицу, но если вы сохраните этот дизайн, тогда да, благодаря cascade=CascadeType.ALL, который вы определили для обеих ассоциаций, удаление человека удалит его PersonPhone s, чтозатем будет каскадно к Phone.

Сущность PersonPhone полезна, только если она имеет больше, чем человек и атрибуты телефона.

...