程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AppEngine数据存储区:“ ID为…的对象由其他对象管理器管理”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决AppENGIne数据存储区:“ ID为…的对象由其他对象管理器管理”?

开发过程中遇到AppENGIne数据存储区:“ ID为…的对象由其他对象管理器管理”的问题如何解决?下面主要结合日常开发的经验,给出你关于AppENGIne数据存储区:“ ID为…的对象由其他对象管理器管理”的解决方法建议,希望对你解决AppENGIne数据存储区:“ ID为…的对象由其他对象管理器管理”有所启发或帮助;

一个持久对象只能由一个PersistenceManager“管理”。在datanucleus中,这由“ ObjectManager”在内部支持。该消息表明您正在尝试将一个PM管理的对象与另一个PM关联。您可以通过打印每个(持久)对象的PM来轻松调试它

JDOHelper.getPersistenceManager(obj);

由于您没有定义消息的来源,因此无法说更多。datanucleus日志条目将告诉您更多方法。

关闭PM始终是必不可少的事情(除非您希望资源泄漏)

解决方法

我正在使用带有Java的Google AppENGIne。当我使用某些数据存储功能时,出现一条错误消息

Object with id "edvaltt.Teacher@64064b" is managed by a different Object Manager

我不知道这意味着什么,如何解决它,或者在哪里可以找到有关此错误的文档。谁能帮我?我使用的代码是:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class School {
@primaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private String shortname;

@Persistent
private String fullname;

@Persistent
@Order(extensions = @Extension(vendorName="datanucleus",key="list-ordering",value="code asc"))
private List<Teacher> Teachers;

...

public Teacher FindOrCreateTeacher(String codE)
{
    // Can we find the teacher without any database code?
    Teacher newTeacher = FindTeacher(codE);
    if (newTeacher != null)
        return newTeacher;

    // Create the teacher:
    PersistenceManager pm = PMF.get().getPersistenceManager();
    transaction tx = pm.currenttransaction();
    try {
        tx.begin();
        for (Teacher teacher : Teachers) {
            if (teacher.getCode() == codE) {
                tx.rollBACk();
                return teacher;
            }
        }
        newTeacher = new Teacher(codE);
        Teachers.add(newTeacher);
        pm.makePersistent(newTeacher);
        pm.makePersistent(Teachers);
        tx.commit();
    } finally {
        tx.commit();
    }
    return newTeacher;
}

我相信“ private List<Teacher> Teachers;”是指“拥有的,一对多”的关系。

大佬总结

以上是大佬教程为你收集整理的AppEngine数据存储区:“ ID为…的对象由其他对象管理器管理”全部内容,希望文章能够帮你解决AppEngine数据存储区:“ ID为…的对象由其他对象管理器管理”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。