Spring JDO - makePersistent不返回创建的对象

时间:2011-11-13 01:01:52

标签: spring jdo

我使用Spring和JDO连接到MySQL数据库。 当我持久化对象时,我希望看到makePersistent()方法返回的创建对象。它确实返回一个对象,但该对象只有新创建的对象的ID。现在持久化的所有其他字段的值都为null。

在下面的代码示例中,我使用carouselNumber插入值12。返回的对象将该值设置为NULL,并且id具有从数据库中新创建的ID值。

我已使用JDOHelper.getObjectState()并发现我的对象处于瞬态状态。

我想知道是否有一些我缺少的注释告诉JDO返回对象的所有值,而不仅仅是新生成的ID。

修改 我已经做了一些进一步的探索,并发现当我使用原始的Datanucleus JDP API时,它可以正常工作。问题似乎只是在我使用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);
   }

.....

1 个答案:

答案 0 :(得分:0)

makePersistent方法会改变您传入的轮播对象以生成ID,因此不需要返回任何内容。只是让你的方法无效并使用你传入的旋转木马。