Я использую 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) и выполнить преобразование между ними?




Оказывается, это можно сделать в одном классе. Пока нет конфликтов между реляционными / нереляционными аннотациями.
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;
}
}
проверьте мой ответ здесь stackoverflow.com/questions/47908365/…