gpt4 book ai didi

google-app-engine - Google App Engine - JDO 分离 FieldAccessException

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:43 24 4
gpt4 key购买 nike

我对 JPA/JDO 和整个 objectdb 世界还很陌生。

我有一个带有一组字符串的实体,看起来有点像:

@Entity
public class Foo{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key id;

private Set<String> bars;

public void setBars(Set<String> newBars){
if(this.bars == null)
this.bars = new HashSet<String>;
this.bars = newBars;
}

public Set<String> getBars(){
return this.bars;
}

public void addBar(String bar){
if(this.bars == null)
this.bars = new HashSet<String>;
this.bars.add(bar);
}

}

现在,在代码的另一部分,我正在尝试做这样的事情:

EntityManager em = EMF.get().createEntityManager();
Foo myFoo = em.find(Foo.class, fooKey);
em.getTransaction().begin();
myFoo.addBar(newBar);
em.merge(myFoo);
em.getTransaction().commit();

当然,当 newBar 是一个字符串时。

但是,我得到的是:

javax.jdo.JDODetachedFieldAccessException: You have just attempted to access field      "bars" yet this field was not detached when you detached the object. Either dont access this field, or detach it when detaching the object.

我已经搜索过答案,但找不到。

我看到有人问过一组字符串,他被告知要添加一个@ElementCollection 符号。

我试过了,但是我得到了一个关于 String 类元数据的错误(我不太明白它是什么意思。)

我真的很感激在这件事上的一些帮助,甚至是对解释这件事的人的一个很好的引用(用简单的英语)。

最佳答案

好的,所以我在一些博客中找到了答案。

所以对于任何感兴趣的人:

为了使用简单数据类型的集合(在 JPA 中),一个 @基本的符号应添加到集合中。所以从我在顶部的例子来看,它应该被写成:

@Basic
private Set<String> bars;

关于google-app-engine - Google App Engine - JDO 分离 FieldAccessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041269/

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