Реляционная модель Java Spring и модель документа как один класс - PullRequest
0 голосов
/ 30 мая 2018

Я использую 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;

    ...
}

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

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

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

1 Ответ

0 голосов
/ 30 мая 2018

Оказывается, это можно сделать в одном классе.Таким образом, до тех пор, пока нет никаких противоречий между реляционными / нереляционными аннотациями.

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