我正在开发一个Java EE 7应用程序。出于测试目的,使用某些内容填充数据库是非常有益的。 This tutorial说明了如何使用SQL文件在运行时或运行时创建数据库内容。我假设,在这个SQL文件中,我可以做这样的事情:
INSERT INTO ENTITYNAME(ENTITYATTRIBUTE1, ENTITYATTRIBUTE2, ... ENTITYATTRIBUTEN) value
("entityAttribute1", "entityAttribute2, ... "entityAttributeN")
如果我的方法是正确的,我将如何提供@ElementCollection,@ OneToMany或仅实体属性的值?
答案 0 :(得分:1)
如果要使用sql脚本使用测试数据预填充数据库,则必须检查JPA从@Entity
类生成的架构。
例如,如果你有2 @Entity
s:
@Entity
public class Foo {
@Id int id;
@ElementCollection Set<String> strings;
@OneToMany(mappedBy"foo") Set<Bar> bars;
}
@Entity
public class Bar {
@Id int id;
@ManyToOne
Foo foo;
}
您将不得不自己检查,但生成的架构可能看起来像这样。
create table Foo {
id int primary key
}
create table Foo_strings {
Foo_id int references Foo (id),
strings varchar,
}
create table Bar {
id int primary key,
Foo_id references Foo(id)
}
因此,如果您想在sql中创建一些测试数据,可以创建一个setup_test_data.sql
,如:
insert into Foo values (1);
insert into Foo_strings values (1, "string 1");
insert into Foo_strings values (1, "string 2");
insert into Bar values (1, 1);
insert into Bar values (2, 1);
这与字符Foo
中{2} String
和@ElementCollection
条中{2} {2} Bar
s @OneToMany
相同。{ / p>