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 test=new ArrayList<>();
//所以我們需要增加一個轉換標籤
@Column(name="test")
@Convert(converter = ListToStringConveter.class)//需要自訂一個轉換的class
private List test=new ArrayList<>();
//get set 那些省略....
}
自訂轉換方式,先implements AttributeConverter<取出資料轉成自己要的資料型態, 存入DB的資料型態>
這裡用 List@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); } }
留言
張貼留言