【问题标题】:How to save List in SQL database?如何将列表保存在 SQL 数据库中?
【发布时间】:2018-09-26 15:24:51
【问题描述】:

我的实体类包含 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 之间交互的网站或书籍的参考,那就太好了。

【问题讨论】:

  • 我想这会对你有所帮助stackoverflow.com/questions/10680910/…>
  • “PS。如果你能给我参考描述java和sql之间合作的网站/书籍,那就太好了” - JDBC Database Access?
  • 你真的需要阅读 JPA 的教程。

标签: java sql list


【解决方案1】:

Lists 通常的 DB 表示是一个单独的表。阅读 JPA 的 @OneToMany 注解。

JPA2 Specification 是有关此主题的一个很好的信息来源(充满了示例,但我听说有些人说它很难阅读/无聊)

【讨论】:

    【解决方案2】:

    正如 Duckstep 所说,通常

    Lists 通常的 DB 表示是一个单独的表。

    如果您不想在数据库中创建 OtM 连接,您可以创建一个帮助类,将列表放入字符串并将字符串拆分为如下列表:

    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 表,因为您完全用无用的重复填充数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2020-09-15
      相关资源
      最近更新 更多