gpt4 book ai didi

java - 使用 sql 保存图像 hibernate (不要 hql)

转载 作者:行者123 更新时间:2023-12-01 08:53:29 25 4
gpt4 key购买 nike

我需要使用 hibernate 将 InputStream 或 byte[] (个人资料图像)保存在表中。这里的代码:

@Override
public void actualizarFotoPerfil(String id, byte[] image) throws CotrafaException {

Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();

String sql = "UPDATE TS_USU_FOTOS SET FOTO = ? WHERE CLIENTE = ?";
SQLQuery query = session.createSQLQuery(sql);

Blob b = Hibernate.createBlob(image);
query.setParameter(0, b.toString());
query.setParameter(1, id);

query.executeUpdate();

session.flush();

}

BD 中的表

create table TS_USU_FOTOS
(
cliente NUMBER(8) not null,
foto BLOB
)

错误是: 引起原因:java.sql.SQLSyntaxErrorException:ORA-00932:数据提示不一致:se esperaba NUMBER se ha obtenido BINARY ADVETENCIA:/pages/common/cambiarFoto.xhtml @34,74 fileUploadListener =“#{barraBB.actualizarFoto}”:org.hibernate.exception.SQLGrammarException:无法执行 native 批量操作查询 javax.el.E​​LException:/pages/common/cambiarFoto.xhtml @34,74 fileUploadListener =“#{barraBB.actualizarFoto}”:org.hibernate.exception.SQLGrammarException:无法执行 native 批量操作查询 在 com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111) 在 org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:310) 在javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:755) 在 javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931) 在 com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)

最佳答案

我的猜测是您有 blob 类型的 FOTO 列。但是您将字符串作为参数b.toString() 传递。尝试删除 toString 并仅传递 b

关于java - 使用 sql 保存图像 hibernate (不要 hql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42215077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com