У меня есть 2 таблицы SQL:
Пользователи:
CREATE TABLE users
(
id BIGINT PRIMARY KEY DEFAULT nextval('global_seq'),
/* email, password, other fields */
);
Users_avatars:
CREATE TABLE users_avatars
(
user_id BIGINT NOT NULL,
file_name VARCHAR,
file_path VARCHAR,
FOREIGN KEY (user_id) REFERENCES users (id)
);
Однако, почему я пытаюсь сопоставить его с Hibernate, он создает file_name
и file_path
внутри таблицы users
.
Мои классы следующие:
@Entity
@Table(name = "users")
@SecondaryTable(name = "users_avatars",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "user_id", referencedColumnName = "id"))
public class User extends EntityWithId
{
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "file_name", column = @Column(table = "users_avatars")),
@AttributeOverride(name = "file_path", column = @Column(table = "users_avatars"))
})
private FileInDb avatar;
public FileInDb getAvatar()
{
return avatar;
}
public void setAvatar(FileInDb avatar)
{
this.avatar = avatar;
}
}
И класс FileInDb:
@Embeddable
@MappedSuperclass
public abstract class FileInDb
{
@Column(name = "file_name")
@NotNull
@NotBlank
private String fileName;
@Column(name = "file_path")
@NotNull
@NotBlank
private String filePath;
public String getFileName()
{
return fileName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public String getFilePath()
{
return filePath;
}
public void setFilePath(String filePath)
{
this.filePath = filePath;
}
}
Сценарий SQL, сгенерированный Hibernate:
create table users (
id int8 not null,
file_name varchar(255),
file_path varchar(255),
/* Lots of other fields */
primary key (id)
)
create table users_avatars (
user_id int8 not null,
primary key (user_id)
)
Почемуэто так?Пожалуйста помоги.Заранее спасибо.