Идентификатор объекта, полученного с помощью JPA, отсутствует

#java #jpa #openjpa

#java #jpa #openjpa

Вопрос:

У меня есть простой объект с целочисленным полем идентификатора следующим образом:

 @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
private int id;
  

Объекты могут быть сохранены в базе данных правильно. Однако при извлечении объекта из базы данных с помощью:

 EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("MyService");
EntityManager entityManager = emFactory.createEntityManager();
MyObject myObject = entityManager.find(MyObject.class, 1);
entityManager.close();
  

Поле идентификатора полученного объекта всегда равно нулю, но значения всех других полей извлекаются правильно.

Если я удалю аннотацию @Id из кода, значение поля id может быть получено правильно, как и все другие поля.

Я использую OpenJPA с MS SQL Server 2008. Тестируются как драйвер MS sqljdbc, так и драйвер JTDS.

Ответ №1:

Это известная ошибка при улучшении с помощью плагина eclipse. Я бы настоятельно рекомендовал использовать другой метод увеличения времени сборки. Не стесняйтесь отправлять дополнительные вопросы в список рассылки пользователей OpenJPA.

Комментарии:

1. Спасибо, Рик. Ответ очень помог.