gpt4 book ai didi

java - 如何使用 hibernate 将文件存储在postgres数据库中?

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:44 24 4
gpt4 key购买 nike

我是 Hibernate 的新手。我需要将文件存储在 postgres 中,列的数据类型是 bytea .我在互联网上四处寻找这个案例的工作演示,但我找不到任何东西。

hibernate 映射:

<property name="fileData" type="binary">
<column name="fileData" not-null="true" />
</property>

POJO:

    private byte[] fileData;        public byte[] getFileData() {            return fileData;        }        public void setFileData(byte[] fileData) {            this.fileData = fileData;        }

table :

    create table nmonData(id int, buildNumber int, path text, fileName text, fileData bytea);

Error :

org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [fileData] in table [nmondata]; found [bytea (Types#BINARY)], but expecting [binary(255) (Types#VARBINARY)]
at org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateColumnType(SchemaValidatorImpl.java:105)
at org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateTable(SchemaValidatorImpl.java:92)
at org.hibernate.tool.schema.internal.SchemaValidatorImpl.doValidation(SchemaValidatorImpl.java:50)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:91)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:473)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
at com.psl.perf.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:34)
at com.psl.perf.DAO.NmonReportFileDaoImpl.save(NmonReportFileDaoImpl.java:15)
at com.psl.perf.service.DataService.saveNmonCSV(DataService.java:249)
at com.psl.perf.main.Main2.main(Main2.java:8)
Jan 22, 2016 12:26:18 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:postgresql://x.x.x.x:5432/perf]
Exception in thread "main" java.lang.NullPointerException
at com.psl.perf.DAO.NmonReportFileDaoImpl.save(NmonReportFileDaoImpl.java:17)
at com.psl.perf.service.DataService.saveNmonCSV(DataService.java:249)
at com.psl.perf.main.Main2.main(Main2.java:8)

有人可以分享工作演示或链接吗?

This worked for me commenting <property name="hbm2ddl.auto">validate</property> in hibernate config file did the trick for me, however I'm confuse now about what should be the data type of column and member variable in java for storing file.

最佳答案

我假设您需要将文件内容存储到 PG bytea 列中。

PostgreSQL DDL

CREATE TABLE data_object
(
obj_id bigserial NOT NULL,
obj_name character(30),
obj_file bytea,
CONSTRAINT data_object_pkey PRIMARY KEY (obj_id)
)

Java Object

@Entity
@Table (name = "data_object")
public class DataObject {

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

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

@Column(name = "obj_file")
private byte[] file;

// getters, setters, hasCode, equals, toString

Driver Code

byte[] data = new byte[FILE_SIZE];
// read file contents into data
DataObject obj = new DataObject();
obj.setFile(data);
// save obj using your hibernate session

我正在使用 Hibernate 4.3.7 和 PG 9.4.1

关于java - 如何使用 hibernate 将文件存储在postgres数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939542/

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