JPA 自訂轉換 AttributeConverter
有時候因為資料存放的關係,會把陣列資料轉成字串存入DB的欄位裡面,
但是要處理資料的時候需要再轉成字串,這時候就需要用到下面這個例子
, String 當例子:
@Entity @Table(name = "test") public class test1 { @Id @Column(name="id") private int id ; @Column(name="auid") private String auid ; @Column(name="ip") private String ip ; //如果只有這樣會報錯 //@Column(name="test") //private List自訂轉換方式,先implements AttributeConverter<取出資料轉成自己要的資料型態, 存入DB的資料型態> 這裡用 Listtest=new ArrayList<>(); //所以我們需要增加一個轉換標籤 @Column(name="test") @Convert(converter = ListToStringConveter.class)//需要自訂一個轉換的class private List test=new ArrayList<>(); //get set 那些省略.... }
@Converter(autoApply=true) public class ListToStringConveter implements AttributeConverter, String> { //陣列資料轉字串 @Override public String convertToDatabaseColumn(List
attribute) { if (attribute == null || attribute.isEmpty()) { return ""; } String str = .....//自訂轉換的方式... return str ; } //再把資料轉成陣列... @Override public List convertToEntityAttribute(String dbData) { if (dbData == null || dbData.trim().length() == 0) { return new ArrayList (); } String data = //dbData 做處理...自訂轉換的方式... return Arrays.asList(data); } }
留言
張貼留言