2016-10-26 98 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用於描述不同的映射最有幫助的。