0
在現有的Java EE應用程序中,存在包含字符串數組作爲字段的JPA實體。不好,但它是什麼。沒有任何註釋,並在Hibernate(在JBoss EAP 6.1 Alpha和MySQL 5.6上)運行應用程序結果將其存儲爲TINYBLOB
。一旦字符串數組包含多個值,但這顯然會失敗,但只要數組不是太大,它仍然可以正常工作。強制JPA實體字段類型爲BLOB
有什麼辦法強制通過JPA 2(不休眠!)註釋該字段被視爲BLOB而不是TINYBLOB
?
使用以下將實際創建BLOB
類型的安裝過程中柱,但嘗試存儲它仍然沒有實體的實例與
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String"
字段批註定義時:
@Lob
@Column(columnDefinition = "blob")
您應該刪除您'@ Column'註釋或相反,你應該有一個@Column(columnDefinition =「clob」)',因爲你需要[變長字符大對象字符串](http://docs.oracle.com/cd/E35137_01/doc.32/e18460/oracle_db2_compared。 HTM#RPTID114)。 – aribeiro
@aribeiro但我不能 - 那麼我現有的所有條目都被破壞了。 – Marco
那麼怎麼樣創建一個新的字段,用@Column(columnDefinition =「clob」)註釋,從現在起逐漸使用,並將另一個標記爲'@deprecated'?你可以改變你的代碼,這樣所有的更新和新的插入會引用新的字段,然後會有一個安全刪除你的「blob」字段的地方。 – aribeiro