当前位置: 首页 > 面试题库 >

在hibernate中加载一个Clob

楚天宇
2023-03-14
问题内容

关于谷歌搜索,可以找到很多东西,但是我还没有找到解决这个问题的可行方法

基本上,我想按需加载的特定类上有一个很大的CLOB。天真的方法是:

class MyType {

  // ...

  @Basic(fetch=FetchType.LAZY)
  @Lob
  public String getBlob() {
    return blob;
  }
}

但是,这不起作用,显然是由于我使用的是oracle驱动程序,即Lob对象没有被视为简单的句柄,而是始终被加载。如此一来,我就被我的尝试所吸引。有一种解决方案使用特殊的工具来进行惰性属性加载,但是由于Hibernate文档似乎表明他们对使它正常工作不感兴趣,因此我不愿意这样做。尤其是必须运行一个额外的编译通道。

因此,我设想的下一个解决方案是将该对象分离为另一种类型,并定义一个关联。不幸的是,尽管文档提供了相互矛盾的信息,但对我来说,很明显,延迟加载不适用于具有共享主键的OneToOne关联。我将关联的一侧设置为ManyToOne,但是我不确定在有共享主键时如何执行此操作。

那么,有人可以建议最好的方法吗?


问题答案:

根据这个唯一的PostgreSQL实现了斑点为真懒。因此,最好的解决方案是将Blob移动到另一个表。您必须使用共享主键吗?你为什么不做这样的事情:

public class MyBlobWrapper {
    @Id
    public Long getId() {
       return id;
    }
    @Lob
    public String getBlob() {
        return blob;
    }
    @OneToOne(fetch=FetchType.LAZY,optional=false) 
    public MyClass getParent() {
        return parent;
    }
}


 类似资料:
  • 我正在使用hibernate注释,为此,在中,我需要添加注释类,比如这里p是包名,Customer是注释bean。 假设我有20个此类注释类,这意味着我必须为该类编写20个映射行。在Spring中,有一个属性,可以用来注册/加载指定包中的所有hibernate注释类。 既然我没有使用Spring,那么我们可以在Hibernate中拥有相同的功能吗?

  • 我使用了和。 但它一次加载两个页面。 有什么方法可以在viewpager中只加载一个页面吗?

  • 我正在开发一个Struts2+Hibernate+Spring应用程序。我试图将用户权限加载到我的会话中,以便将它们恢复到特定的JSP中。 工作流程如下: 用户登录 Hibernate热切地加载了用户组 出什么事了?我是在用Hibernate还是Spring做错了什么?

  • 我面临的问题是一对一的惰性加载在Hibernate中不起作用。我已经解决了,但还是不明白会发生什么。 我的代码(懒惰加载在这里不起作用,当我拉person-address也被提取): 但是:如果我在OneToOne关系中添加,那么惰性加载工作很好! 问题/恳求:请给我解释一下注释如何帮助实现延迟加载。 附注。我看过post1和post2,明白了为什么简单的OneToOne不能偷懒,但我还是不能掌握

  • 存在问题 你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据。你可以使用下面解决方法: 解决方法 使用Jsoup.connect(String url)方法: Document doc = Jsoup.connect("http://example.com/").get(); String title = doc.title(); 说明 connect(String url) 方法

  • 我正在使用Struts、Spring和Hibernate与mysql&Eclipse Kepler的集成进行在线考试项目。在Registration.jsp页面中提交值时,我试图将这些值存储在同一个数据库中的两个不同的表(user_details,address)中。我可以将它们存储在数据库中,但我不能获取user_id,这是地址表的外键。user_id是user_details表中的主键,除了地