у меня есть объект с серийным полем, который хранится в базе данных
@Entity
@Table(name = "serial")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(columnDefinition = "nvarchar2(50)")
private String serial;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getSerial() {
return serial;
}
public void setSerial(String serial) {
this.serial = serial;
}
}
Это мой основной класс
public class Main{
public static void main(String[] args) {
EntityManager entityManager = jpa.getEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
Person person= new Person();
person.setSerial("ب12345678");
entityManager.persist(person);
entityTransaction.commit();
entityManager.close();
}
}
Эта запись хранится в базе данных
ID SERIAL
---------- --------------------------------------------------
1 ┐12345678
SQL>
Это метод, в котором я хочу взять серию из базы данных и выполнить над ней операцию разделения, чтобы символы и числа были отделены друг от друга, и вывод отображался мне таким образом.
ب / 12-345678
Моя проблема в том, как получить последовательную базу данных и выполнить операцию разделения?
public static String getSerial(){
Person person= new Person();
String oldString= person.getSerial();
String newString = "";
if (oldString != null){
if (oldString.length()==9){
newString = oldString.substring(0, 1) + "/" + oldString.substring(1, 3) + "-" + oldString.substring(3);
}
}
return newString;
}
Я сохранил запись concat в базе данных, теперь я хочу взять ее из базы данных и выполнить над ней операцию разделения.
Итак, у вас есть жало "ب 12345678" и вы хотите получить компоненты?
@talex Да, я хочу получить значение из базы данных и выполнить операцию разделения




Просто создайте вспомогательный метод и скажите JPA игнорировать его:
@Column(columnDefinition = "nvarchar2(50)")
private String serial;
public String getSerial() {
return this.serial;
}
public void setSerial(String serial) {
this.serial = serial;
}
@Transient
public String getSerialFormatted() {
if (this.serial == null || this.serial.length() != 9)
return this.serial;
return this.serial.substring(0, 1) + "/" + this.serial.substring(1, 3) + "-" + this.serial.substring(3);
}
Поскольку вы уже знаете, как сохранить сущность, в чем проблема с ее чтением и обновлением?