Hibernate генерирует странный DDL для конфигурации с последовательным столбцом и FK. Пример (Book.author * -1 Authors.id):Hibernate external key to serial column
@Entity
@Table(name = "books")
public class Book {
private Integer id;
private Author author;
@Id
@Column(name = "id", columnDefinition = "serial")
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@JoinColumn(name = "author", nullable = true)
@ManyToOne(optional = true, fetch = FetchType.LAZY)
public Author getAuthor() {
return author;
}
public void setAuthor(Author author) {
this.author = author;
}
}
@Entity
@Table(name = "authors")
public class Author {
private Integer id;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
Результат DDL для автора колонки в таблице: книги
ALTER TABLE books ADD COLUMN author integer;
ALTER TABLE books ALTER COLUMN author SET NOT NULL;
ALTER TABLE books ALTER COLUMN author SET DEFAULT nextval('authors_seq'::regclass);
Он имеет странное значение по умолчанию, а также я не могу сделать это обнуляемым , Можно ли исправить это без написания columnDefinition для FK?
Я думаю, что вы допустили ошибку @JoinColumn (name = "author", nullable = true) здесь попробуйте это * @ JoinColumn (name = "id", nullable = false) * –
@RaviKavaiya name - это просто название столбца, это может быть что угодно. – therg
Старый вопрос об этой проблеме http://stackoverflow.com/questions/15511899/cannot-make-manytoone-relationship-nullable – therg