【发布时间】:2017-03-08 21:57:22
【问题描述】:
我正在使用带有 Gradle 的 Spring Boot JPA。我正在努力寻找一个我可以遵循的指南,该指南专注于使用正确的 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= 设置为关系另一端的主键字段的名称,但它再次没有建立。
非常感谢
【问题讨论】:
-
映射看起来很合理。您到底在做什么来创建此“未找到属性错误”错误?运行查询?如果是这样,请发布。
标签: spring hibernate jpa spring-boot h2