Преобразование модели Java в JPAJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Преобразование модели Java в JPA

Сообщение Anonymous »

Я реализовал класс User, который представляет пользователя (пока что либо ученика, либо учителя). Их объединяет то, что у них обоих есть идентификаторы и некоторая информация о пользователе (она хранится в составном классе UserInformation). Вот как класс User выглядел раньше:

Код: Выделить всё

public abstract class User {
private UUID id;
private UserInformation info;

public User(String surname, String name, String email) {
this.info = new UserInformation(surname, name, email);
this.id = UUID.randomUUID();
}

public UUID getId() {
return this.id;
}

public UserInformation getInfo() {
return this.info;
}
}
Затем я захотел углубиться в базы данных H2 в памяти в Spring Boot и обнаружил, что могу использовать аннотацию @Id для представления первичного ключа пользователя. Я также обнаружил, что могу использовать аннотацию @GeneratedValue, которая будет генерировать для меня идентификатор.
Поэтому я соответствующим образом изменил свой код:

Код: Выделить всё

@MappedSuperclass
public abstract class User {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;
@Embedded private UserInformation info;

public User(String surname, String name, String email) {
this.info = new UserInformation(surname, name, email);
}

protected User() {

}

public UUID getId() {
return this.id;
}

public UserInformation getInfo() {
return this.info;
}
}
Однако после этого изменения я больше не могу получить доступ к Id с помощью простого вызова getId. Я уже многое сделал на основе этой функции getId. Даже в некоторых моих собственных исключениях я ссылаюсь на определенные объекты на основе их идентификатора, как, например, в этом GradeOutOfBoundsException:

Код: Выделить всё

public class GradeOutOfBoundsException extends Exception {

GradeOutOfBoundsException(int valueOfGrade, UUID studentId, String assignmentName) {
super( "Value:" + valueOfGrade + " out of 0-100 bounds assigned for student with id: " + studentId + " in module " + assignmentName); }
}
Теперь у меня есть пара идей, как это можно исправить.
  • Сохраните явную инициализацию id с помощью UUID.randomUUID(). Это, вероятно, сработает, но я бы предпочел вместо этого использовать аннотацию @GeneratedValue.
  • Прекратите использовать идентификаторы в коде и используйте некоторые другие идентификаторы объектов, например фамилию пользователя.
Как лучше всего решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/798 ... del-to-jpa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»