我正在使用一个具有CLOB列的表(Oracle)。我正在使用Hibernate查询表。以下是我用于映射Oracle表的类的快速浏览:
@Entity
@Table(name="D2D_OPD_ORDERDELIVERY")
public class D2dOpdOrderDelivery implements Serializable {
// other column mappings omitted for brevity
@Column(name="POD_SIGNATURE_IMG", nullable=true)
@Lob
private Clob podSignatureImage;
我已成功设法运行Hibernate查询,该查询从数据库中返回一行:
// Create a Hibernate query (HQL)
Query query = session.createQuery("FROM D2dOpdOrderDelivery WHERE orderNumber = :orderNumber");
query.setParameter("orderNumber", orderNumber);
在我的代码的其他地方,我对我的Clob执行空检查 - 它不是null。接下来,我试着得到我的Clob的长度。这就是我遇到问题的地方。我收到以下错误:
java.sql.SQLException: Closed Connection
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:147)
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:209)
oracle.sql.CLOB.getDBAccess(CLOB.java:1212)
oracle.sql.CLOB.length(CLOB.java:223)
抱歉,我只是不明白为什么会收到此错误。我已经运行了我的查询(该行中的所有其他字段都存在)。为什么我无法获得CLOB的长度?
有人可以指出我哪里出错了吗?
谢谢。
答案 0 :(得分:0)
好的,在发布这个问题后,我又回去搜索了一些互联网。在我发布我的问题之前,我以为我做了很好的工作 - 但这是另一回事......
无论如何,我在这里找到了一个有用的链接: http://www.javavids.com/video/how-to-read-data-from-blob-using-jpa-hibernate.html
我对代码所做的更改:
@Column(name="POD_SIGNATURE_IMG", nullable=true)
@Lob
@Basic(fetch=FetchType.LAZY)
private char[] podSignatureImage;
然后我可以在我的char []
上调用.length希望这对其他人有帮助......