Как мне получить значение строки из базы данных и выполнить операцию преобразования?

у меня есть объект с серийным полем, который хранится в базе данных

@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;
    }

Поскольку вы уже знаете, как сохранить сущность, в чем проблема с ее чтением и обновлением?

Thomas 30.03.2021 15:46

Я сохранил запись concat в базе данных, теперь я хочу взять ее из базы данных и выполнить над ней операцию разделения.

pouria karimi 30.03.2021 15:52

Итак, у вас есть жало "ب 12345678" и вы хотите получить компоненты?

talex 30.03.2021 15:58

@talex Да, я хочу получить значение из базы данных и выполнить операцию разделения

pouria karimi 30.03.2021 16:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
25
1

Ответы 1

Просто создайте вспомогательный метод и скажите 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);
}

Другие вопросы по теме