0
在我的代碼中,實體類的字段有一個CLOB列。這對Oracle很好,但是當我嘗試將MySQL用作數據庫時,它看起來CLOB類型會導致問題,因爲MySQL不支持CLOB。控制檯錯誤是如何讓Hibernate將CLOB轉換爲MySQL類型
13:35:27錯誤[main] org.hibernate.tool.hbm2ddl.SchemaUpdate 您的SQL語法錯誤;檢查對應於您的MySQL服務器版本使用附近的正確的語法手動 'CLOB, messageSubject LONGTEXT, senderEmailAddress VARCHAR(255), ' 在行7 [主]
Java代碼片斷是:
@Column(length = 4000)
private String messageSubject;
@Column(columnDefinition = "CLOB")
private String messageBody;
,這裏是我的entityfactory
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="runtime" />
<property name="dataSource">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/cggruntime" />
</bean>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
<property name="generateDdl" value="true" />
<property name="showSql" value="false" />
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">10</prop>
<prop key="hibernate.archive.autodetection">class</prop>
<!-- Activate Second-Order Cache for Entities and Queries -->
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
</props>
</property>
</bean>
我的問題是,有沒有什麼辦法來配置Hibernate使CLOB可以自動轉換到加時賽她支持的數據類型(如文本)?
謝謝
是否有關於MySQL支持CLOB的任何參考/鏈接?在您使用@Lob的代碼中。這工作,但MySQL創建類型爲「longtext」的列。實際上,如果我像這樣在列註釋中添加「CLOB」:@Column(columnDefinition =「CLOB」),控制檯中總是有錯誤「org.hibernate.tool.hbm2ddl.SchemaUpdate SQL中有錯誤語法;請查看與您的MySQL服務器版本相對應的手冊,以便在「CLOB,messageSubject longtext,senderEmailAddress varchar(255)」附近使用正確的語法。刪除CLOB使代碼正常工作。 – danny
CLOB作爲columnDefinition不受支持。 MySQL只識別'@ Lob'註釋,然後使用上下文來確定它是否是clob或blob。使用基本MySQL創建查詢將該列定義爲CLOB,然後使用字符串上的'@ Lob'來訪問它。 – gravityplanx