Как создать внешний ключ в Hibernate на столбце Integer - PullRequest
5 голосов
/ 18 марта 2011

У меня есть объект в Java, и я бы хотел, чтобы Hibernate создал внешний ключ из поля Integer (поскольку у меня нет ссылки на объект):

@Entity
public class Invoice {

    ...
    @Column(nullable = true)
    private Integer generatedBy;
    ...

Я думаю, что хотел бы сделать что-то подобное с атрибутом:

    @ForeignKey(name="FK_Invoice_GeneratedBy", references="UserTable.UserId")
    @Column(nullable = true)
    private Integer generatedBy;

Каков наилучший способ достичь этого? Я бы предпочел не сохранять эти отношения в отдельном файле (если это возможно).

Ответы [ 2 ]

2 голосов
/ 02 мая 2012

Кажется, что нет решения для этого, таким образом, принимая это как ответ.

0 голосов
/ 18 марта 2011

Есть способ сделать это, но это не очень хорошо ...

Вы можете иметь свой целочисленный атрибут И атрибут объекта, сопоставленный таким образом:

@Column(ame = "GENERATED_BY", nullable = true)
private Integer generatedBy;

@ForeignKey(name="FK_Invoice_GeneratedBy")
@JoinColumn(name = "GENERATED_BY", nullable = false, updatable = false, insertable = false)
private User generatedByUser;

Вы можете не иметь никакого внешнего доступа к полю генерируемого пользователя, оно только покажет спящий режим, что есть связь.Вы можете установить поле Integer по желанию, когда вы позже загрузите этот объект из БД, у вас будет ссылка на пользователя.

Опять же, не очень красиво, но иногда может быть полезно.

...