我的实体类包含primefaces.model.map.Marker的列表:
@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 DB吗?
我知道存在不同的方法:将列表保存为单个字符串,作为对象......
P.S。:如果你能给我一个描述Java和SQL之间相互作用的网站或书籍的参考,那就太棒了。
答案 0 :(得分:3)
Lists的常用DB表示是一个单独的表。阅读JPA&#39; @OneToMany
注释。
关于这个主题的信息的一个很好的来源是JPA2 Specification(充满了例子,但我听说有些人说它难以阅读/无聊)
答案 1 :(得分:2)
正如Duckstep所说的那样,通常是
列表的常用数据库表示是一个单独的表。
如果您不想在数据库中创建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表,因为您无需重复就完全填满了数据库。