0
我是Hibernate的新手。 我需要在postgres中存儲文件,該列的數據類型爲bytea
。 我在網上瀏覽了一下這個案例的演示,但是我找不到任何東西。如何使用hibernate將文件存儲在postgres數據庫中?
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; }
表:
create table nmonData(id int, buildNumber int, path text, fileName text, fileData bytea);
錯誤:
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)
有人可以分享工作演示或鏈接嗎?
這爲我工作 評論
<property name="hbm2ddl.auto">validate</property>
在 休眠配置文件爲我做的伎倆,但我現在混淆 什麼應該是列和成員變量的數據類型 的Java存儲文件。
BYTEA在PG映射在Java中爲byte []。我假設你想存儲文件內容而不是參考(位置)。將該列對應的對象字段聲明爲byte []。將您的文件轉換爲字節[]並將其設置爲字段值。當你保存你的對象時,文件內容將被映射到bytea列。從數據庫讀取數據時讀取字節數組,並從字節[]重新構建文件。 –
@ShireResident我做了類似的事情,但仍然收到錯誤。 我編輯的帖子添加了代碼片段和錯誤。 –
你可以發佈NmonReportFileDaoImpl.java代碼嗎? –