有一个主表需要加载一个子表,子表当中有一个字段为Lob用来保存图片。
此时Lob字段有数据,当我通过查询主表数据时,会报异常
Unable to access lob stream; nested exception is org.hibernate.HibernateException: Unable to access lob stream
具体操作就是通过
securityUserRepository.findByName("XXX")
获取某个User时,报错了。
因为是给接口返回数据的,SecurityUser中Location部分不能改成懒加载,所以具体怎么改,哪个好心人给看看呗,
谢谢了!
以下为主要部分的代码,SecurityUser是主表,Location是子表:
SecurityUser
public class SecurityUser implements Serializable {
private static final long serialVersionUID = 57212890345839147L;
@Id
private String id;
@Basic(optional = false)
@Column(length = 100, unique = true)
@NaturalId
private String name;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "SECURITY_USER_LOCATION", joinColumns = { @JoinColumn(name = "users_id") }, inverseJoinColumns = { @JoinColumn(name = "location_id") })
private Set<Location> locations = new HashSet<>();
}
Location
public class Location implements Serializable {
private static final long serialVersionUID = -4750805696249599768L;
@Id
@Column(name = "ID")
private String id;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "IMAGE", nullable = true)
@JsonSerialize(using = ByteSerializer.class)
private byte[] image;
}
SecurityUserRepository
@Repository
public interface SecurityUserRepository extends JpaRepository<SecurityUser, String> {
public SecurityUser findByName(String name);
}