2016-10-26 61 views
1

我使用Spring启动JPA和Gradle。我正在努力寻找一个我可以遵循的指南,它着重于使用正确的Spring Boot语法创建关系数据库。我了个去,但我得到这个错误Spring Boot中的关系数据库外键JPA /休眠

No property idTestCase found for type TestRun! 

我想TestRun和TESTDATA实体与对方OneToOne关系,并具有与TestRun一个一对多的关系一个TestCase实体。我认为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=到关系另一侧的主键字段的名称,但它又没有生成。

非常感谢

+0

映射看起来很合理。你到底在做什么来创造这个'没有财产发现错误'的错误?运行查询?如果是这样,发布。 –

回答

0

我发现在指导对JBoss用于描述不同的映射最有帮助的。