JPA在简单的byte []字段级别处于懒惰状态

Cel*_*nHC 9 hibernate jpa lazy-loading nhibernate-mapping jpa-2.0

不幸的是,下面的代码不起作用.始终检索图像!

@Entity
public Car implements Serializable {
    ...
    @Basic(fetch = FetchType.LAZY) //Neither with @Lob
    private byte[] image;
    ...
}
Run Code Online (Sandbox Code Playgroud)

设置:JPA 2.0/Hibernate 3.5/MySQL 5.5

Shi*_*gon 0

我记得不久前(大约 2007 年)这是一个问题:即为什么字节数组被急切地获取,即使它们被声明为惰性数组。显然 Hibernate 的人还没有解决这个问题。

以下是一些可行的替代方案:

首先,尝试@Lob也注释您的字段,看看是否按预期工作。

其次,将您的替换byte[]java.sql.Blob,它具有用于设置和获取实际字节数组的便捷方法,因此不会是一个大的重构,这实际上应该解决延迟加载问题:

http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Blob.html