2017-06-02 215 views
0

想象一下,我從前端獲得新實體。對於Java類看起來像:休眠實體持久性

public class SomeClass { 

    private Long id; 

    private String nameOfSomeClass; 

    @OneToMany(mappedBy = "someClass") 
    private List<Other> others; 

} 

和:

{ 
    nameOfSomeClass: "Some name" 
    others: [{ 
      otherName: "name1" 
     }, 
     { 
      otherName: "name2" 
     } 

    ] 
} 

我如何能堅持這個對象:

public class Other { 

    private Long id; 

    private String otherName;   

    @ManyToOne 
    private SomeClass someClass; 

} 

我從前端POST請求?其實我沒有Other的編號,它在SomeClass上有參考。 SomeClass的情況相同。

我的看法是:首先我需要堅持others的每個元素,併爲SomeClass提供空的id參考。之後,我會得到others各自的id's。然後我會堅持SomeClass對象,並得到id並堅持others再次,但idSomeClass

我知道這是完全錯誤的,休眠有一些正確的解決方案。你能幫我解決嗎?

+0

如果'name'是唯一的,則將其用作'ID' –

+0

@KrzysztofCichocki我在數據庫中使用'id'作爲PK,名稱不是唯一的 – Nox

回答

0

你應該hadle這一問題的方法是:

創建SomeClass實例,其值填充它, 創建的Other的instaces並填寫並添加結束「鏈接」在一起:

SomeClass s = new SomeClass(); 
s.setNameOfSomeClass(nameOfSomeClass); 

Other o1 = new Other(); 
o1.setOtherName(otherName); 
o1.setSomeClass(s) 

List others = new ArrayList(); 
others.add(o1); 

s.setOthers(others);