hibernate延迟加载集合

时间:2012-01-13 17:25:03

标签: java hibernate lazy-loading

我不熟悉Hibernate并且有以下查询:

考虑两个类:

public class Ticket{

  private List<Attachement> attachmentList=new ArrayList<Attachment>();
  ...
}

public class Attachment{
   private String fileName;
   private bytes[] fileData;
}

考虑一个场景:

用户打开票证以查看其详细信息。随着票证详细信息,与该票证相关的所有附件的列表也将显示(我的意思是仅附件的名称)。用户将单击文件名以下载该附件。

在显示故障单的详细信息时,我不想获取相关附件数据,直到用户点击他们的fienames下载它们。 (我想仅显示名称

使用延迟加载,可以延迟加载附件,但是如何仅提前获取文件名(“ fileName ”属性类附件),而不是“ fileData

提前致谢。

2 个答案:

答案 0 :(得分:1)

您需要编写自定义查询以仅加载附件的名称。在您的应用程序中,您应该使用某种TicketService方法并使用loadTicket方法。在该方法中,您应该加载票证(并且只加载票证),然后加载附加到票证的附件的名称。

将该数据返回给用户界面。当用户单击附件名称时,您可以加载完整的附件。

答案 1 :(得分:1)

在没有显式查询的情况下使用简单对象加载很难做到。我建议创建自定义查找器方法(可能使用本机SQL查询)。首先获取ID和文件名,显示它们,当用户点击FileName时,你有id,从中获取附件。