【发布时间】:2016-01-03 14:05:51
【问题描述】:
我是 JPA 和 Hibernate 的新手,遇到以下问题。
在 Spring MVC 项目中,我有这个 Tid001Anagpartecpa 模型类,它映射数据库中定义的 TID001_ANAGPARTECIPA 表上的字段: p>
@Entity
@Table(name="TID001_ANAGPARTECIPA")
@NamedQuery(name="Tid001Anagpartecipa.findAll", query="SELECT t FROM Tid001Anagpartecipa t")
public class Tid001Anagpartecipa implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="PRG_PAR")
private Integer prgPar;
................................................................
................................................................
................................................................
@Lob @Basic(fetch=FetchType.LAZY)
@Column(name="OGG_DOC_ALL")
private byte[] oggDocAll;
@Lob @Basic(fetch=FetchType.LAZY)
@Column(name="OGG_DOC_DEL_ALL")
private byte[] oggDocDelAll;
................................................................
................................................................
GETTER & SETTER METHODS
................................................................
................................................................
}
正如您在此表中看到的那样,有 2 个 BLOB 字段使用 @Lob 注释进行注释,这些字段包含存储在数据库中的 2 个文件。
在这个类中还声明了这个命名查询,它检索存储为 TID001_ANAGPARTECIPA 表记录的所有 Tid001Anagpartecipa 对象:
正如您在前面的代码截图中看到的那样,@Lob 字段使用了 lazy 策略(通过 @Basic(fetch=FetchType.LAZY))。所以我预计当我检索 Tid001Anagpartecpa 对象时,这 2 个 @Lob 字段不会被初始化。
在控制器方法中,我执行检索 Tid001Anagpartecpa 对象的操作:
Tid001Anagpartecipa anagrafica = getAnagraficaPartecipante(model);
List<Tid002Candidatura> listaCandidatureDB = anagrafica.getTid002Candidaturas();
对象已正确检索,但问题是前 2 个 @Lob 字段已初始化,我希望这些字段未初始化(实际上我使用了 @Basic(fetch= FetchType.LAZY) 指令)。
为什么要检索这些字段?我错过了什么?当检索到 Tid001Anagpartecpa 时,如何让 Hibernate 不检索这些 @Lob 字段?
Tnx
【问题讨论】:
标签: spring hibernate jpa spring-data hibernate-mapping