使用Hibernate加载社区Infobright数据

时间:2015-03-30 13:31:43

标签: java hibernate jdbc infobright

Infobright数据库社区版本未实现SQL Insert语句。它使用其他语句来代替数据加载。请参阅以下链接:

https://support.infobright.com/forums/showthread.php?7939-insert-in-table

因此,hibernate无法将数据保存到infobright数据库,因为hibernate使用插入statament。

Hibernate: insert into Desenvolvedor (Cidade, Estado, Nome) values (?, ?, ?)
org.hibernate.exception.GenericJDBCException: could not execute statement
at org.hibernate.exception.internal.StandardSQLExcept ionConverter.convert(StandardSQLExceptionConverter .java:54)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.c onvert(SqlExceptionHelper.java:126)
...
Caused by: java.sql.SQLException: Table storage engine for 'desenvolvedor' doesn't have this option
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:1086)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:4237)
...

下面是hibernate.cfg.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
  <!-- Database connection properties - Driver, URL, user, password -->
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.password">test</property>
  <property name="hibernate.connection.url">jdbc:mysql://10.61.15.117:5029/test</property>
  <property name="hibernate.connection.username">TestUser</property>
  <!-- Outputs the SQL queries, should be disabled in Production -->
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.connection.pool_size">1</property>
  <mapping class="base.Desenvolvedor"/>
</session-factory>
</hibernate-configuration>

有人已经遇到过这个问题吗?是否真的有必要使用Hibernate createSQLQuery()方法或直接使用JDBC为Community Infobright数据库实现此数据插入?

谢谢,

Canicali

1 个答案:

答案 0 :(得分:0)

采用的解决方案是将表引擎从BRIGHTOUSE更改为MYISAM。最后一个接受hibernate生成的插入命令。在SQL Create Table语句中,可以在不更改数据库引擎默认值的情况下设置表的引擎。

create table test.Desenvolvedor (
    nome varchar(11),
    cidade varchar (255),
    estado varchar (255)
) engine = MYISAM