seam文件上传至postgres bytea列 " 列是bytea但表达式是bigint类型"[英] seam file upload to postgres bytea column " column is bytea but expression is of type bigint"

本文是小编为大家收集整理的关于seam文件上传至postgres bytea列 " 列是bytea但表达式是bigint类型"的处理方法,想解了seam文件上传至postgres bytea列 " 列是bytea但表达式是bigint类型"的问题怎么解决?seam文件上传至postgres bytea列 " 列是bytea但表达式是bigint类型"问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

紧跟 this example,我正在上传一个小文件并尝试存储到 postgresql bytea 列.

这是错误(前两个输出是在尝试 INSERT 之前输出 bean 属性的日志语句:

<块引用>

SAGE 1 -- action.registration.LetterTemplateHome - 内容类型:text/xml

SAGE 1 -- action.registration.LetterTemplateHome - letterTemplateText: [B@48c7aaef

SAGE 1 -- action.registration.LetterTemplateHome - 内容为字符串:xml version="1.0" encoding="UTF-8" Standalone="yes" .... 等

SAGE 1 -- org.hibernate.util.JDBCExceptionReporter - 批处理条目 0 插入 letter_template(content_type、file_name_template、fileSize、letter_template_name、letter_template_text、letter_template_id)值('text/xml'、'letterDate.xml'、'0', 'yu', '37078', '202') 被中止.调用 getNextException 查看原因.

SAGE 1 -- org.hibernate.util.JDBCExceptionReporter - 错误:列"letter_template_text"是 bytea 类型,但表达式是 bigint 类型提示:您将需要重写或强制转换表达式.位置:162

这是在 bean 中定义字段的方式:

    private byte[] letterTemplateText;

@Lob
@Column(name = "letter_template_text")
@Basic(fetch = FetchType.LAZY)
public byte[] getLetterTemplateText() {
    return this.letterTemplateText;
}

public void setLetterTemplateText(byte[] letterTemplateText) {
    this.letterTemplateText = letterTemplateText;
}

推荐答案

我怀疑 Hibernate 试图在 PostgreSQL 中使用"大对象"方法,这涉及将 OID"句柄"存储到表中的文件中.一些示例阅读:http:///virgo47.wordpress.com/2008/06/13/jpa-postgresql-and-bytea-vs-oid-type/

如果您想坚持只使用 bytea 列(这在 SQL 端使用起来相当简单),请使用 BinaryType 来映射列.请参阅:字节[]的正确休眠注释

本文地址:https://www.itbaoku.cn/post/1763837.html