当前位置: 首页 > 知识库问答 >
问题:

Hibernate斑点

汪丁雷
2023-03-14

我尝试在我的DB中更新一个表“image”并插入blob类型。

public static void main (String args[]) throws FileNotFoundException{
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.getCurrentSession();
        Transaction tx = session.beginTransaction();
        File image = new File("c://img//button.png");   
        System.out.println("file esistente ? "+image.exists());
        InputStream in = new FileInputStream(image);
        Blob blob = Hibernate.getLobCreator(session)    
                .createBlob(in, image.length());        
        Image imageClass = new Image();
        imageClass.setImage(blob);
        imageClass.setName("blobTry");
        session.save(imageClass);
        session.getTransaction().commit();
        sessionFactory.close();
    }

ImageClass:

   @Entity
@Table(name = "IMAGE")
public class Image {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private int id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "IMAGE")
    private Blob image;

        /* ... auto generated getters / setters */
    }

Hibernate用户映射:

 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernatetutorial</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="hibernate.jdbc.batch_size">0</property> 
        <property name="hibernate.current_session_context_class">thread</property>
        <property name="hibernate.show_sql">true</property>

        <mapping class="com.journaldev.hibernate.model.Image" />

利布:

错误:

共有1个答案

常枫涟
2023-03-14

我从这篇文章中获得了以下答案

AbstractMethodError表示您的JDBC驱动程序的PreparedStatements不实现setBlob(int,InputStream,long)。

使用较旧的setBlob(int,Blob)或更新驱动程序(Connector/J5.1实现了Jdbc 4.0,这应该是setBlob(int,InputStream,long)所需要的)

 类似资料:
  • 下面的Rust代码试图在一个数组中存储一个零参数闭包,并调用函数。 链接到 Rust Playground。不幸的是,它不会编译: 错误[E0277]:

  • 已挂, 查看状态变更为业务面试-未录用 -------------------------------------------------------- 1. 深挖项目,需要对自己的项目和类似开源项目,用到的框架技术有深入了解 2. Redis 3. MySQL 4. 消息队列 5. GC相关 反问 拷打约50分钟 面试官水平很高,也会根据你的回答引导,可惜自己太菜了,很多没回答上来

  • 问题内容: 对于跨进程的数据通信,我打算使用Redis列表。生产者推送到列表,而一组使用者使用BRPOP消费列表内容。 为了限制列表的大小无限增长,我想将列表大小限制为固定值(例如1万个项目)。我很惊讶地没有找到像BLPUSH或BRPUSH这样的等效命令。这是Redis员工故意遗漏的吗? 因此,我假设我必须在推送之前使用Watch / multi创建一个Txn来检查列表大小。这是正确的方法还是可用

  • 本文向大家介绍azure-webjobs 斑点触发,包括了azure-webjobs 斑点触发的使用技巧和注意事项,需要的朋友参考一下 示例 修改Azure存储Blob时触发的一个简单函数示例:            

  • Flare objects are the source assets that are used by Lens Flare Components. The Flare itself is a combination of a texture file and specific information that determines how the Flare behaves. Then whe

  • 我想做什么? 我想使用命令行插入图片到MariaDB数据库,使用LOAD_FILE功能。 发生了什么? 我总是得到一个NULL返回。 我不想要这样的解决方案:这是糟糕的风格,到目前为止我还没有看到过-尝试存储完整的路径!我想将此图片存储在这个数据库中,而不是路径中。 系统 > ArchLinux 4.7.2-1-ARCH 一张叫做“测试”的照片。jpg(817KB)位于,甚至在 这张图片属于用户和