Я ищу некоторые советы относительно сопоставления большой старой схемы.Hibernate ManyToOne без внешнего ключа
Прошлая ситуация. Предположим, у нас есть класс, называемый BusinessTransaction. Этот класс имеет несколько полей, ссылающиеся идентификаторы пользователей:
@Entity
public class BusinessTransaction implements Serializable {
private Long id;
private User createdBy;
private User editedBy;
private User cancelledBy;
private String department;
// etc
}
public class User implements Serializable {
private Long id;
private String department;
//etc
}
Однако нет ни одного внешних ключей между столом BusinessTransaction и столом пользователя. В SQL пользователь будет подключен к BusinessTransaction через левое внешнее соединение в ключе отдела.
Для создания этих внешних ключей потребуется создание таблиц Join. Наш администратор базы данных не хочет создавать внешние ключи или таблицы соединений и имеет понятные причины для этого (влияет на пакетные сценарии, возможные побочные эффекты на приложение и т. Д.).
Единственной другой идеей, которую я имел, было использование JoinFormula. Однако у @JoinFormula нет лучшей документации, и я понимаю, что данные будут доступны только для чтения.
Я пропустил все, что было бы полезно?
EDIT: добавлен отдел.
Джейсон
Как бизнес-транзакция относится к пользователю в базе данных, если нет FK? Что хранится в таблице бизнес-транзакций для обращения к пользователю? –
Мой плохой. Я отредактировал выше, но в основном есть поле, в котором SQL/HQL-запрос может выполнять левое внешнее соединение. – Jason
«поле, чтобы запрос мог выполнять соединение» - это внешний ключ, но вы говорите, что у вас нет внешнего ключа? Если пользователь идентифицирован отделом, почему бы не назначить отделу первичный ключ пользователя? – meriton