Я пытаюсь установить отношение OneToMany между автором и его сообщениями, используя автор в качестве внешнего ключа и имя пользователя в качестве первичного ключа, используя Java EE 6 и toplink + eclipselink в качестве поставщика постоянства.
Здесьвот что у меня есть:
Аннотации в классе User
@Id
@NotNull(message = "Please enter username")
@Size(min = 8, max = 40)
@Column(unique=true, nullable=false)
private String username;
...
private Collection<BlogEntry> blg = new ArrayList<BlogEntry>();
@OneToMany(cascade = {CascadeType.ALL}, mappedBy="user")
public Collection<BlogEntry> getBlg() {
return blg;
}
Аннотации в классе BlogEntry
@NotNull
@Size(min = 8, max = 40)
private String author;
...
private User user;
@ManyToOne()
public User getUser() {
return user;
}
Проблема заключается в том, что новый столбец (USER_USERNAME) добавляется, когдавставка значений в BlogEntry Table, которая, конечно, показывает ошибку поля, не существующего в BlogEntry:
INSERT INTO BLOGENTRY (ID, CONTENT, AUTHOR, TITLE, CREATED, USER_USERNAME) VALUES (?, ?, ?, ?, ?, ?)
bind => [301, xxxxxxxx, xxxxxxxx, xxxxxxxx, 2011-06-07 12:49:07.014, null]
Я был бы очень рад узнать, почему такой столбец добавлен или что исправить, чтобы получить простойСвязь OneToMany с использованием полей имени пользователя и автора.Я искал и перепробовал много уроков, но, похоже, что-то упустил.