我将 Spring Boot JPA 与 Gradle 结合使用。我正在努力寻找一个可以遵循的指南,该指南重点关注使用正确的 Spring Boot 语法创建关系数据库。我尝试了一下,但收到此错误
No property idTestCase found for type TestRun!
我想要 TestRun 和 TestData 实体彼此之间具有 OneToOne 关系,并且 TestCase 实体与 TestRun 具有 OneToMany 关系。我认为 TestRun 应该包含 TestData 和 TestCase 的外键。
很多时候我进行了更改,但它不会构建,当它构建时,表格看起来不正确,这就是我创建的:
@Entity
public class TestRun {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long testRunId;
private Boolean result;
@OneToOne @JoinColumn(name="testData_id")
private TestData testData;
@ManyToOne @JoinColumn(name="testCase_id")
private TestCase testCase;
}
@Entity
public class TestCase {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long testCaseId;
private String name;
private String description;
@OneToMany(cascade=CascadeType.ALL, mappedBy="testCase",targetEntity=TestRun.class)
private Collection<TestRun> testRun;
}
@Entity
public class TestData {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long testDataId;
@OneToOne(cascade=CascadeType.ALL, mappedBy="testData",targetEntity=TestRun.class)
private TestRun testRun;
}
从指南中我不清楚里面的内容
@JoinColumn(name=
有些人说它需要链接到 POJO 上的字段,有些人说不需要。如果我在 POJO 中创建外键字段,那么我会在数据库表中获得两个外键字段,如果不这样做,则根本不会构建。
例如,从错误中我可以推断它希望我将以下字段添加到 TestRun:
private long idTestCase;
private long idTestData;
但是我的数据库显示为:
SELECT * FROM TEST_RUN;
TEST_RUN_ID
ID_TEST_CASE
ID_TEST_DATA
RESULT
TEST_CASE_ID
TEST_DATA_ID
(no rows, 3 ms)
我尝试将
@JoinColumn(name=
设置为关系另一端的主键字段的名称,但同样没有构建。
非常感谢
我发现 JBoss 上的指南对于描述不同映射最有帮助。