Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过将blob映射到二进制数据来读取和写入blob_Java_Hibernate_Sybase_Hibernate Mapping - Fatal编程技术网

Java 通过将blob映射到二进制数据来读取和写入blob

Java 通过将blob映射到二进制数据来读取和写入blob,java,hibernate,sybase,hibernate-mapping,Java,Hibernate,Sybase,Hibernate Mapping,我尝试使用hibernate JPA从Sybase DB读取blob时遇到以下异常 实体 @Lob @Column(length=100000) private byte[] fileContent; public byte[] getFileContent() { return fileContent; } public void setFileContent(byte[] fileContent) { this.fileContent = fileContent;

我尝试使用hibernate JPA从Sybase DB读取blob时遇到以下异常

实体

@Lob
@Column(length=100000)    
private byte[] fileContent;

public byte[] getFileContent() {
    return fileContent;
}

public void setFileContent(byte[] fileContent) {
    this.fileContent = fileContent;
}
ioc.Registry方法com.sybase.jdbc3.jdbc.SybResultSet.getBlob(字符串)不受支持,不应调用。 ioc.注册表操作跟踪: ioc.Registry[1]根据购买请求触发事件“激活” TapestryModule.RequestExceptionHandler处理请求失败,出现未捕获的异常:不支持且不应调用方法com.sybase.jdbc3.jdbc.SybResultSet.getBlob(字符串)。 org.apache.tapestry5.ioc.internal.OperationException:不支持且不应调用com.sybase.jdbc3.jdbc.SybResultSet.getBlob(字符串)方法

我遇到了下面的hibernate线程,它提供了一个链接,指向如何通过将blob映射到二进制数据来读取和写入blob的示例,但是该链接已失效

线

死链

我想知道是否有人可以提供一个例子或一篇文章来描述如何做到这一点

更新

我发现以下JIRA问题概述了这个问题

Laura声称“这个问题的解决方法是创建映射到Sybase文本和图像类型的用户定义类型。”


有人熟悉创建用户定义类型吗?

您可以尝试在映射中使用java.sql.Blob而不是字节数组。可以使用Hibernate.createBlob()函数从字节数组、字符串和输入流转换blob。这样做的好处是延迟加载(只有在hibernate会话打开之前)

否则,在内存中加载较大的对象会消耗大量堆空间

 private void setBlob(Blob blob) 
 {
    this.image = toByteArray(blob);
 }

 private Blob getBlob()
 {
   return Hibernate.createBlob(this.image);
 }

@ManuPK的可能重复链接中提供的解决方案似乎无法解决我的问题。嗨,Ram,我有点困惑,我尝试使用blob作为数据类型,私有blob内容,但我得到一个编译错误,“基本属性只能是以下类型:Java基元类型”。我也不知道你对toByteArray做了什么。你能再详细说明一下你的例子吗。谢谢