2015-02-09 463 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(完整的例子,但我听到一些人说,这是很难读/枯燥)