У меня есть несколько типов, которые имеют общее поле (идентификатор электронной почты), который я использую как @Id
. Эти типы распространяются от обычного пользователя, у которого есть поле «Идентификатор электронной почты». Это то, как показано ниже:Задайте вопрос: как я могу получить уникальный идентификатор для нескольких типов?
@Entity
class User{
@Id
String emailID;
}
@Entity
@Subclass(index = true)
class UserType1 extends User{
String otherField;
}
@Entity
@Subclass(index = true)
class UserType2 extends User{
String otherField;
}
Теперь я хочу, чтобы каждый раз, когда я ввожу подтип пользователя, идентификатор электронной почты должен оставаться уникальным во всех этих подтипов объектов в хранилище данных. Я тестировал конечную точку для вышеуказанных типов, вставляя каждый из подтипов с тем же идентификатором EmailID, и это произошло успешно. Objectify не должен допускать сохранение подтипов с одинаковым идентификатором. По моему пониманию, конечная уникальность обеспечивается ключами, но я не могу обеспечить уникальность идентификатором только подтипов, особенно когда идентификатор находится в базовом классе? Есть ли способ сделать это?
EDIT: Хотя, это не решение, которое я искал, я справилась с этой ситуацией, создав новый тип объекта с {EMAILID, Key_Subtype}, который работал в обеспечении уникальности. Я просто проверяю этот объект на существующий адрес электронной почты, и я использую ключ для извлечения объекта другим запросом.
Если у кого-то отличное решение, я был бы признателен.
С Objectify проблема заключается в том, что мне нужно будет выполнить запрос для каждого подтипа. У меня есть идентификатор электронной почты уже как уникальный идентификатор, поэтому я не требую UUID для каждого типа.Я просто хочу, чтобы запросить все подтипы в 1 запросе, чтобы узнать, является ли свойство идентификатора электронной почты уникальным для нового пользователя. –
Хорошо. Теперь я понимаю. Итак, может быть, просто перечисление с пользовательскими типами? – MicD