Я использую Spring и JDO для подключения к базе данных MySQL.
Когда я сохраняю объект, я ожидаю увидеть созданный объект, возвращенный методом makePersistent()
. Он возвращает объект, но у этого объекта есть только идентификатор вновь созданного объекта. Все остальные поля, которые были сохранены, теперь имеют значение null.
В приведенном ниже примере кода я вставляю значение 12 с помощью carouselNumber
. Возвращаемому объекту присваивается значение NULL, а для идентификатора используется только что созданное значение идентификатора из базы данных.
Я использовал JDOHelper.getObjectState()
и обнаружил, что мой объект находится в переходном состоянии.
Мне интересно, есть ли какая-то аннотация, которой мне не хватает, чтобы сказать JDO
, чтобы она возвращала все значения объекта, а не только недавно созданный идентификатор.
EDIT:
Я провел дальнейшие исследования и обнаружил, что когда я использую сырой API Datanucleus JDP, это прекрасно работает. Проблема возникает только тогда, когда я использую шаблон Spring JDO. Я действительно хотел бы понять, почему это отличается. Спасибо
Заранее спасибо,
Брайан.
@PersistenceCapable(table = "CAROUSEL", identityType = IdentityType.APPLICATION)
public class Carousel {
@PrimaryKey(column = "ID")
@Persistent(valueStrategy = IdGeneratorStrategy.INCREMENT)
private Long id;
@Column(name = "CAROUSEL_NUM")
private int carourselNumber;
......
public class CarouselDAOImpl extends JdoDaoSupport implements ICarouselDAO {
public Carousel insert(Carousel carousel) {
return getJdoTemplate().makePersistent(carousel);
}
.....