【问题标题】:Hibernate: Insert List<String> into database after calling another method on it and converting it to String: save the whole list in a single cellHibernate:在对其调用另一个方法并将其转换为 String 后将 List<String> 插入数据库:将整个列表保存在单个单元格中
【发布时间】:2020-05-11 10:34:55
【问题描述】:

假设我有这个类,我正在尝试使用 Hibernate 将其插入 PostgreSQL 数据库:

@Entity
@Table(name = "users")
public class User  {
  private String name;
  private String email;

  private List<String> pets = new ArrayList<>();  //pets get added later

  //getters, setters, adders
}

在另一个文件中:

public class Utils  {
  public static String listToString(List<?> list, String separator)  {
        String result = "";

        for (Object e: list)  {
            result += e.toString() + separator;
        }

        return result == "" ? result : result.substring(0, result.lastIndexOf(separator));
    }
}

我希望将用户映射到一个 name email pets 表,其中 pets 值 Utils.listToString(user.getPets())。是否可以通过 Hibernate 实现?

编辑

我对代码进行了这些更改

private List<String> pets= new CustomArrayList();
public class CustomArrayList extends ArrayList<String> implements List<String> {
   @Override
   public String toString()  {
       return Utils.listToString(this, "\n");
    }
}

如果使用CustomArrayList 更容易实现,我如何让Hibernate 在数据库中保存时调用它的toString

编辑

我希望将所有内容保存在名为 pets 的同一张表中,我希望列表中的所有元素保存在一个单个中单元格,在同一行,在表格的同一列中。

【问题讨论】:

    标签: java postgresql hibernate hibernate-mapping


    【解决方案1】:

    使用@OneToMany 注解One-to-Many。然后继续保存调用。

    【讨论】:

    • 它会把宠物保存到另一张桌子上吗?我希望将所有数据保存在一个表中,并将整个宠物列表保存在同一列的同一行中
    • 是的,您需要创建一个PETS表,使用主键外键关系将您的USER表与您的pets表映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2014-04-26
    • 1970-01-01
    • 2021-12-27
    • 2019-09-10
    • 2020-09-24
    相关资源
    最近更新 更多