Jpa加载Lob字段报Unable to access lob stream异常

有一个主表需要加载一个子表,子表当中有一个字段为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);
}
阅读 5k
1 个回答

自己找到方法了,在调用的方法上添加事务就可以了。具体这么做的原因不清楚,请求大神解答!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题