我有一个包含多个字段的实体:
@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;
....
}
我有一个相应的表单和操作,它将填充该对象并将其保存到 mySql。 当涉及到存储新的“Leilighet”实体时,这一切都很好。
但是当我使用此表单“编辑”现有的“Leilighet”时,我偶然发现了一些我不知道该怎么做的事情。
出于编辑目的,我不想加载整个上传的文件。仅显示文件名就足以表明存在文件。如果用户选择一个新文件,那么它应该被覆盖,但如果用户什么都不选择,那么应该保留当前文件。
但我不知道如何让 hibernate 做我想做的事。除非我用实际文件填充 filebin
,否则 hibernate 只会删除该文件。
我怎样才能告诉hibernate只更新其他字段而不是文件字段?
最佳答案
Hibernate 支持延迟加载单个属性。请参阅http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#performance-fetching-lazyproperties了解详情。
或者,您可以仅使用包含此特定用例中所需字段的 DTO,并使用适当的投影执行查询,以便从数据库填充此 DTO。
关于java - Hibernate - 如何保留一个实体但忽略某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7081391/