2015-02-09 15 views
1

我的實體類包含primefaces.model.map.Marker列表:如何在sql數據庫中保存列表?

@Entity 
@Table(name = "appuser") 
public class UserEntity extends BaseEntity {` 

    private List<Marker> places = new ArrayList<Marker>(); 

    public List<Marker> getPlaces() { 
     return places; 
    } 
} 

我也有sql文件,該文件描述了我的桌子。我知道有保存String,Double和其他原始類型。但我不知道如何使用我自己的類型的對象來保存數組,集合的原始類型或集合。

你能幫我這些(保存列表到oracle數據庫)? 我知道存在不同的方法來做到這一點:保存列表像單個字符串,像對象...

PS。如果你給我參考描述java和sql之間合作的網站/書籍,那將是非常好的。

+0

我認爲這將幫助你 2015-02-09 23:02:30

+1

*「PS。如果你給我參考描述java和sql之間的協作的站點/書籍「* - [JDBC數據庫訪問](http://docs.oracle.com/javase/tutorial/jdbc/)? – MadProgrammer 2015-02-09 23:03:41

+0

您確實需要閱讀有關JPA的教程。 – 2015-02-09 23:03:53

回答

2

正如Duckstep媒體鏈接說,平時

Lists的通常DB表示形式是一個單獨的表格。

如果您不想在數據庫中創建一個OTM連接,你可以創建一個輔助類,這使該列表中的String並分割字符串成一個列表如下所示:

public class Helper { 

    public String stringify(List<Marker> l) { 
     String rs = ""; 
     for (Marker marker : l) { 
      rs = rs + ',' + marker.toString(); 
     } 
     rs.substring(1); 
     return rs; 
    } 

    public List<Marker> makeList(String rs){ 
     List<Marker> rl = new LinkedList<Marker>(); 
     String[] a = rs.split(","); 
     for (String string : a) { 
      Marker rm = new Marker(); 
      // I don't know what class of marker you use, 
      //but here you should create the marker from the string 
      rl.add(rm); 
     } 
     return rl; 
    } 

} 

但是認真!最好使用OtM表,因爲你完全用無用的重複填充數據庫。

3

Lists的通常DB表示形式是一個單獨的表格。閱讀JPA的@OneToMany註釋。

的良好來源關於這個主題的信息是JPA2 Specification(完整的例子,但我聽到一些人說,這是很難讀/枯燥)

相關問題