2013-05-12 4 views
1

У меня есть следующее @OneToOne отношение:JPA @OneToOne отношение удаление

@Entity 
public class CarUser { 
    @OneToOne 
    @JoinColumn(name = "use") 
    private User user; 
} 

@Entity 
public class User { 
} 

В принципе, пользователь находится в базовой модели и CarUser находится в модели расширения. И пользователь ничего не должен знать о CarUser (я не могу определить обратное отношение на нем).

Вопрос: Когда я удаляю пользователя, есть ли способ каскадировать удаление CarUser?

+0

Есть ли отношения в базе данных? В каком количестве приложений они будут сосуществовать? Будет ли «Пользователь» находиться в одном и «CarUser» на другом? – acdcjunior

+0

у них есть, у CarUser будет столбец, ссылающийся на пользователя, в соответствии с предложенной аннотацией JPA. – Wudong

+0

По отношению я имею в виду нечто вроде внешнего ключа. – acdcjunior

ответ

1

По определению, если вы хотите заявить, что «Пользователь ничего не должен знать о CarUser», вы не можете получить слой persistence для каскада для вас.

Вам необязательно делать это заявление, хотя это может быть неправильное понимание дизайна. Разумеется, сущности, в рамках одной схемы базы данных, знать друг о друге.

Будем говорить так: даже если (в системе производства/учета) CostingModule и LedgerModule находятся в разных модулях, ожидается, что будет полностью обмениваться и взаимодействовать с.

Вы также можете сделать это с ограничением внешнего ключа в базе данных или с помощью триггеров.

alter table CARUSER add constraint CARUSER_USER foreign key (ID) 
    references "USER" (ID) on delete cascade; 
Смежные вопросы