У меня есть простой объект с полем целочисленного идентификатора в следующем виде:
@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 из кода, значение поля id можно получить правильно, как и все остальные поля.
Я использую OpenJPA с MS SQL Server 2008. Тестируются как драйвер MS sqljdbc, так и драйвер JTDS.