![](/img/trans.png)
[英]Is there a way to get a 'refreshed' saved entity when saving with JPA in Spring boot?
[英]Spring Boot JPA: How to change the way an attribute is saved
我需要找到一種使用 JPA 插入具有屬性的實體的方法。其中一個屬性代表一個十六進制字符串。 由於使用了 DB 和其他要求,我不得不將此字符串與語法 X'stringValue' 插入到 DB 中。
不幸的是,我沒有找到任何方法來插入這種語法。 我嘗試使用@Query(本機 sql)和@Columntransformer(X'?'),但沒有任何幫助,因為由於單引號,問號始終用作字符串。
我需要這樣的東西: Hibernate: insert into table (SPECIAL_COLUMN, NORMAL_COLUMN) values (X'?', ?)
實現一個AttributeConverter 。 在將屬性保存到數據庫之前,將使用convertToDatabaseColumn()
計算其值。 當您從數據庫中讀取此屬性時,數據庫中的值將使用convertToEntityAttribute()
進行轉換,然后設置為該屬性。
簡而言之,它可以如下所示:
public class XPrefixConverter implements AttributeConverter<String , String> {
public String convertToDatabaseColumn(String attribute) {
if (attribute != null) {
return HexFormat.of().withPrefix("X").formatHex(attribute.getBytes());
} else {
return null;
}
}
public String convertToEntityAttribute(String attribute) {
if (attribute = null) {
return new String(HexFormat.of().withPrefix("X").parseHex(value));
} else {
return null;
}
}
}
然后將它用於特定屬性:
@Convert( converter = XPrefixConverter.class )
private String hexString;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.