Hibernate - 如何持久化实体但忽略某些字段?

时间:2011-08-16 16:16:03

标签: java hibernate

我有一个包含多个字段的实体:

@Entity
public class Leilighet {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long leilighetId;
private String navn;
private String beskrivelse;
private String adresse;
private String postNr;
private String postSted;
private double pris;

//The following fields should not be stored:
private String filename;
private String filetype;
private String filesize;
private byte[] filebin;

....
}

我有一个相应的表单和Action,它将填充此对象并将其保存到mySql。 在存储新的“Leilighet”实体时,这一切都很好。

但是当我使用这种形式来“编辑”现有的“Leilighet”时,我偶然发现了一些我无法弄清楚该怎么做的事情。

出于编辑目的,我不想加载整个上传的文件。仅显示文件名就足以指示存在文件。如果用户选择了一个新文件,那么它应该被覆盖,但如果用户没有选择任何内容,则应该保留当前文件。

但我无法弄清楚如何让hibernate做我想要的。除非我使用实际文件填充filebin,否则hibernate将删除该文件。

如何告诉hibernate只更新其他字段而不是文件字段?

1 个答案:

答案 0 :(得分:1)

Hibernate支持懒惰加载各个属性。有关详细信息,请参阅http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#performance-fetching-lazyproperties

或者您只能在此特定用例中使用只包含所需字段的DTO,并使用适当的投影执行查询,以便从数据库中填充此DTO。