«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать управление версиями данных с помощью составных первичных ключей в JPA?

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

Опубликовано 16 ноября 2024 г.
Просматривать:641

How to Implement Data Versioning with Composite Primary Keys in JPA?

Обработка составного первичного ключа с помощью JPA

Версионирование данных требует возможности дублировать объект с разными версиями, поэтому создание составного ключа крайне важно первичный ключ для сущностей.

Определение сущности с составным первичным ключом Ключ

В JPA составные первичные ключи могут быть определены с использованием аннотаций @EmbeddedId или @IdClass.

Использование @EmbeddedId

Определите отдельный класс (@Embeddable annotated) для ключа, а затем аннотируйте его с помощью @EmbeddedId в сущности:

@Entity
public class YourEntity {
    @EmbeddedId
    private MyKey myKey;

    private String columnA;
    // getters and setters
}

@Embeddable
public class MyKey implements Serializable {

    private int id;
    private int version;
    // getters and setters
}

Использование @IdClass

Альтернативно добавьте к классу аннотацию @IdClass и определите атрибуты ID как @Id внутри класса:

@Entity
@IdClass(MyKey.class)
public class YourEntity {

    @Id
    private int id;

    @Id
    private int version;

}

public class MyKey implements Serializable {
   private int id;
   private int version;
}

Дублирование объектов с помощью версий

После того как объект определен, его можно продублировать с использованием новой версии. Например, чтобы создать новую версию первой сущности с id=1:

YourEntity newVersion = new YourEntity();
newVersion.setMyKey(new MyKey(1, 1)); // new version
newVersion.setColumnA("Some Other Data");
entityManager.persist(newVersion);
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3