如何通过excel导入实体及其依赖对象

时间:2010-06-24 08:31:53

标签: java jpa import bulkinsert

我们有一个简单的数据模型反映了以下内容......

  1. 用户包含许多@OneToMany地址
  2. 用户包含许多@OneToMany手机
  3. 用户包含许多@OneToMany电子邮件
  4. 用户通过@ManyToOne
  5. 属于@Organization

    我们希望客户在excel / csv表中捕获所有用户信息,并将其提供给我们的上传工具。我们提供了一个简单的用户界面来捕获导入字段的顺序。当我们仅为用户支持导入时,我们没有遇到任何问题(即我们让最终用户定义导入字段的顺序并在excel中使用相同的内容)

    我们不确定支持@OneToMany和@ManyToOne字段的正确策略是什么。问题如下。

    1. 如果用户在平面线中有多个地址,则不确定如何展平信息(例如,User1有2个地址,1个电话,3个电子邮件,而用户2有1个地址,1个电话......)
    2. 如何处理@ManyToOne注释(您不能指望最终用户提供主键 - 在这种情况下是整数ID),您是否希望它们在此处提供组织名称,假设导入后用户可以修改此信息如有必要
    3. 如何在导入操作期间处理delta值(比如说另外10个用户?)
    4. 您是否有针对Organization,Users,UserAdress和所有相关对象的单个导入文件?
    5. 是否有任何工具/ API可以抽象导入/导出这些需求?

3 个答案:

答案 0 :(得分:1)

您可以像在数据库中那样展平结构,例如为用户读取表格,地址表格等等。

您可以将csv或excel读取到内存数据库中,并使用hibernate为您构建业务对象。

答案 1 :(得分:0)

使用DataNucleus,您可以使用JPA注释映射等同于Excel数据的类,并将其加载到您的应用程序中。然后,可以将其保留到您需要的任何其他类型的数据存储区中。

答案 2 :(得分:0)

  

是否有任何工具/ API可以抽象导入/导出这些需求?

DbUnit现在还支持基于Excel的dataset