我是一个新手,刚开始接触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; }
表格 :
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)
有人可以分享一个可用的演示或链接吗?
这对我有用 在hibernate配置文件中注释掉
<property name="hbm2ddl.auto">validate</property>
就可以解决问题,但现在我对于在Java中存储文件的列和成员变量的数据类型感到困惑。
<property name="hbm2ddl.auto">validate</property>
。移除验证属性后,异常消失,并且文件被存储在数据库中。 - Ketu<property name="hbm2ddl.auto">validate</property>
这个属性应该使用什么样的PostgreSQL数据类型和对应的Java类型? - Ketu