[英]Map Varchar column type to Integer in entity jpa
我有舊表,其中一個列的類型是 varchar,但里面有所有數字。 我不想更改表中的數據類型。 我想更改實體中的列數據類型。
在它是字符串之前,現在我將其更改為 Integer 並且 crud 操作工作正常。 這是很好的做法還是有其他方法可以做到? 示例代碼:
前:
@Entity
public class TestEntity{
@Column(name = "Test")
private String test;
}
現在:
@Entity
public class TestEntity{
@Column(name = "Test")
private Integer test;
}
創建一個AttributeConverter
用於數據庫到實體類型的轉換
@Converter
public class IntegerToStringConverter implements AttributeConverter < Integer,
String > {
@Override
public String convertToDatabaseColumn(Integer value) {
return Integer.toString(number);
}
@Override
public Integer convertToEntityAttribute(String number) {
try {
return Integer.parseInt(number);
} catch (Exception e) {
throw new IllegalStateException("Invalid number: " + value);
}
}
}
並在您的專欄上使用它
@Convert(converter = IntegerToStringConverter.class)
@Column(name = "Test")
private Integer Test;
您可以通過 getter/setter 對數據庫中的字段進行解析,並將@Transient
注釋應用於 integer 屬性。
@Entity
public class TestEntity {
@Column(name = "test")
private String getTest() {
return String.valueOf(this.intTest);
}
private void setTest(String test) {
try {
this.intTest = Integer.parseInt(test);
} catch (NumberFormatException e) {
this.intTest = 0;
}
}
@Transient
private int intTest;
public int getIntTest() { return intTest; }
public void setIntTest(int test) {
this.intTest = intTest;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.