gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:02:19 24 4
gpt4 key购买 nike

我正在使用连接到 MySQL 数据库的 Spring 和 JDO。当我保留一个对象时,我希望看到由 makePersistent() 方法返回的已创建对象。它确实返回了一个对象,但是这个对象只有新建对象的ID。所有其他保留的字段现在都具有 null 值。

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

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

我想知道是否缺少一些注释来告诉 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);
}

.....

最佳答案

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

关于Spring JDO - makePersistent 不返回创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com