我在我的實體模型中有以下字段。如何忽略單元測試中的某些字段,休眠
@Column(name="key")
@ColumnTransformer(
read="AES_DECRYPT(key, SHA1('passcode'))",
write="AES_ENCRYPT(?, SHA1('passcode'))")
private String secret_key;
我使用MySQL數據庫和hibernate會完全加密/解密使用AES_ENCRYPT和AES_DECRYPT函數的鍵值。但是,Spring嵌入式數據庫(HSQL或H2)並不知道這個特定的MySql函數。它引發以下錯誤:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not insert: [com.xxx.Table]
at ...
Caused by: org.hibernate.exception.SQLGrammarException: could not insert: [com.xxx.Table]
at ...
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: AES_ENCRYPT
所以我的問題是,
- 我怎麼能告訴Hibernate來從某些數據庫寫忽略這個字段。或
- 如何獲得HSQL和/或H2與這個mysql函數一起工作。
謝謝
對於第一種解決方案,您爲什麼要忽略此字段的書寫?你不能只在斷言中忽略這個字段?你可以在你的問題中提供更多關於你想要測試的細節。 – davidxxx
@davidxxx我想忽略該字段,因爲當hibernate嘗試插入表時,由於函數不兼容(HSQL中基本不存在),它會拋出異常。我用堆棧跟蹤更新了問題 –