Реляционная модель Java Spring и модель документа как один класс

Я использую Java Spring и имею модель, которую в настоящее время сопоставляю как с реляционной базой данных (MySQL), так и с базой данных NoSQL (MongoDB).

@Entity
@Document
public class Person {

    @Id
    @AutoGenerated(...)
    private long id;

    @Id
    private String documentId;

    private String firstName;
    private String lastName;

    ...
}

Мне нужно, чтобы идентификатор реляционной модели был длинным, а модель, не связанная с отношениями, была String. Я не уверен, что дублирование аннотаций @Id (даже разных типов) вызовет проблемы.

Есть ли способ аннотировать класс, чтобы убедиться, что модель совместима с JPA и MongoClient?

Или мне нужно создать два разных класса (PersonDocument, PersonEntity) и выполнить преобразование между ними?

проверьте мой ответ здесь stackoverflow.com/questions/47908365/…

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

Ответы 1

Оказывается, это можно сделать в одном классе. Пока нет конфликтов между реляционными / нереляционными аннотациями.

import org.springframework.data.mongodb.core.mapping.Field;

@javax.persistence.Entity
@org.springframework.data.mongodb.core.mapping.Document
public class Person {

    @javax.persistence.Id
    @javax.persistence.GeneratedValue
    @org.springframework.data.annotation.Transient
    private long id;

    @org.springframework.data.annotation.Id
    @javax.persistence.Transient
    private String documentId;

    @Field
    private String firstName;

    @Field
    private String lastName;

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

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