MongoDB и Morphia - традиционный идентификатор (длинный) вместо ObjectId
Фон:
Мой проект службы REST был запущен с использованием Hibernate. Я использую id (Long) в доменном классе как часть идентификатора в rest url, например:
http://abc.com/customer-50, где 50 - длинный идентификатор.
Класс Hibernate Annotated выглядит следующим образом:
public class Customer {
@Id
@GeneratedValue
private Long id;
}
Теперь мне нужно перенести наш дизайн в Mongodb. Естественный выбор - использование Morphia, который является структурой сущности.
Проблема: в Morphia поле id является ObjectId
@Id private ObjectId id;
Это вызовет проблемы, потому что: 1. Это не автоинкремент, то есть http://abc.com/customer-50, http://abc.com/customer-51, http://abc.com/customer-52
Теперь это становится http://abc.com/customer-4d1b4687a6d5437619000000
Мне нужно будет изменить все ссылочные классы с long на objectId.
Можно ли сохранить оригинальный дизайн (который использует длинный идентификатор вместо ObjectId)?
Спасибо!
1 ответ
Взгляните на https://code.google.com/p/morphia/source/browse/trunk/morphia/src/main/java/com/google/code/morphia/utils/LongIdEntity.java https://github.com/mongodb/morphia/blob/master/morphia/src/test/java/org/mongodb/morphia/utils/LongIdEntity.java (ссылка обновлена) https://github.com/MorphiaOrg/morphia/blob/master/morphia/src/test/java/xyz/morphia/utils/LongIdEntity.java (обновлено снова)