标签: jdo

如何从GAE数据存储中删除列(属性)?

我有一个存储在GAE数据存储区中的持久化类.我已从课程中删除了其中一个属性.此表中的新记录显示<none已删除属性的值>.但有没有办法可以完全放弃这个专栏?

谢谢.

根据moraes的建议添加了以下"迁移"代码,但未达到预期效果:

PersistenceManager pm = PMF.get().getPersistenceManager();
try {
    Query q = pm.newQuery(UserLogin.class);
    Collection<UserLogin> list = (Collection<UserLogin>) q.execute();

    Iterator<UserLogin> iter = list.iterator();
    while (iter.hasNext()) {
        UserLogin obj = (UserLogin) iter.next();
        obj.setLoginDate(obj.getLoginDate());
    }

    pm.makePersistentAll(list); 

} finally {
    pm.close();
}
Run Code Online (Sandbox Code Playgroud)

database google-app-engine datastore jdo

8
推荐指数
3
解决办法
4116
查看次数

持久化java对象最简单的方法是什么?

现在我有java程序,其类目前是POJO并存储在易失性存储器中.这些都需要坚持下去.据我所知,两个流行的选择是JDO和Java Persistence API.对于那些对SQL,Torque等知之甚少的人来说,这是为程序数据添加持久性的最简单方法吗?

java persistence object-persistence jdo apache-torque

7
推荐指数
4
解决办法
2万
查看次数

在Android中使用JDO

我试图找到有关该主题的任何信息; 找不到任何东西.让我觉得奇怪,因为JDO听起来像智能手机应该非常善于做的事情.

你知道JDOAndroid设备,本机或外部应用程序/库是否可行?

android jdo

7
推荐指数
0
解决办法
1073
查看次数

App Engine标识符.密钥与Id

要在Google App Engine中识别我的JDO对象,我使用该Key类型.它工作正常,但当我需要通过URL传递它时,它会变得有点长.

例如: http://mysite.com/user/aghtaWx1LWFwcHIZCxIGTXlVc2VyGAMMCxIHTXlJbWFnZRgHDA

在我的管理员查看器中查看我的实体时,我可以看到数据存储也为我的实体对象设置了一个"id",它似乎是一个增量数值,与Key字符串相比非常短.我可以使用它来获取有关我的对象的信息吗?我该怎么做呢?我尝试使用getObjectbyId()id而不是密钥...它不起作用.

有任何想法吗?

java google-app-engine jdo

7
推荐指数
1
解决办法
3650
查看次数

在Spring 3.1中配置JDO?

我曾经让我的所有DAO扩展了JdoDaoSupport类,现在在Spring 3.1中已经弃用了.我已经创建了自己的AbstractJdoDao类,包装了PersistenceManagerFactory所有DAO并从那里扩展.这是我应该做的方式吗?

另外在JDO文档中,似乎直接实例化PersistenceManagerFactory不是默认选项,而是使用LocalPersistenceManagerFactoryBean包装在一个TransactionAwarePersistenceManagerFactoryProxy.如何正确地实例化这些bean并使它们与Spring的@Transactional注释一起使用.

这是我的应用程序上下文中与持久性相关的部分:

<bean id="persistenceManagerFactoryProxy" class="org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy">
    <property name="targetPersistenceManagerFactory">
        <bean class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean">
            <property name="jdoPropertyMap">
                <props>
                    <prop key="javax.jdo.PersistenceManagerFactoryClass">org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory</prop>
                    <prop key="javax.jdo.option.ConnectionURL">appengine</prop>
                    <prop key="javax.jdo.option.NontransactionalRead">true</prop>
                    <prop key="javax.jdo.option.NontransactionalWrite">false</prop>
                    <prop key="javax.jdo.option.RetainValues">false</prop>
                    <prop key="javax.jdo.option.DetachAllOnCommit">true</prop>
                    <prop key="javax.jdo.option.Multithreaded">true</prop>
                    <prop key="datanucleus.appengine.ignorableMetaDataBehavior">NONE</prop>
                </props>
            </property>
        </bean>
    </property>
    <property name="allowCreate" value="false" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="transactionManager" class="org.springframework.orm.jdo.JdoTransactionManager">
    <property name="persistenceManagerFactory" ref="persistenceManagerFactoryProxy" />
</bean>
Run Code Online (Sandbox Code Playgroud)

现在,当我加载访问数据存储的页面时:

org.springframework.transaction.CannotCreateTransactionException: Could not open JDO PersistenceManager for …
Run Code Online (Sandbox Code Playgroud)

java spring jdo

7
推荐指数
1
解决办法
3772
查看次数

找不到类org.datanucleus.api.jdo.PersistenceManagerFactoryClass

我正在使用Google App Engine(appengine-java-sdk-1.6.6)为使用JDO和maven(maven-gae-plugin)的应用程序进行项目结构和构建.构建是成功的,同时使用DataNucleus Enhancer增强我的域类.

运行应用程序时,我遇到此问题:找不到类org.datanucleus.api.jdo.PersistenceManagerFactoryClass.任何人都可以建议.谢谢

PS:我已经做了一个grep(在linux上)在APP Engine SDK文件夹中找到PersistenceManagerFactoryClass,我找不到它.

Could not instantiate bean class [com.peerbuccoss.apps.mtp.dao.impl.CommonDaoImpl]:  Constructor threw exception; nested exception is javax.jdo.JDOFatalUserException: Class     org.datanucleus.api.jdo.PersistenceManagerFactoryClass was not found.
NestedThrowables:
java.lang.ClassNotFoundException:     org.datanucleus.api.jdo.PersistenceManagerFactoryClass:
java.lang.ClassNotFoundException: org.datanucleus.api.jdo.PersistenceManagerFactoryClass
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at javax.jdo.JDOHelper$18.run(JDOHelper.java:2018)
at javax.jdo.JDOHelper$18.run(JDOHelper.java:2017)
at java.security.AccessController.doPrivileged(Native Method)
at javax.jdo.JDOHelper.forName(JDOHelper.java:2015)
at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1162)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1093)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:919)
Run Code Online (Sandbox Code Playgroud)

google-app-engine jdo

7
推荐指数
1
解决办法
4273
查看次数

GWT编辑器和GAE数据存储区

GWT有一个编辑器框架,经过粗略的检查,看起来非常像Spring MVC/Forms如何处理后端数据对象和前端UI组件之间的数据绑定.

我正在编写我的第一个GWT/GAE应用程序,并想知道是否有任何方法可以将此编辑框架 GAE的JDO/Atomic库结合使用,这是您针对应用程序和基础数据存储区之间的O/R映射编写的API .

这两个框架是互补的还是相互排斥的?如果他们可以一起工作,有人可以提供一个小代码示例,说明我如何使用它们来填充一个<select>带有名单列表的HTML 框,或者其他基本但实用的东西.

我想这可能涉及一个PersonPOJO代表一个人(并且有一个String name属性),也许某种PersonDAO使用JDO/Atomic到CRUD Person实例到/来自数据存储区,然后某种类型Editor<Person>可以将Person实例映射到前端<select>s.

如果我能看到一个有效的例子,我认为它将全部聚集在一起.并且,如果这些是彼此排斥的并且不能一起使用,那么为什么会被非常感谢的可靠解释!提前致谢!

java gwt google-app-engine jdo google-cloud-datastore

7
推荐指数
1
解决办法
435
查看次数

从Google App Engine数据存储区获取的内容不一致

我在Google应用引擎中部署了一个应用程序.当我在更新该实体后立即通过id获取实体时,我得到的数据不一致.我正在使用JDO 3.0来访问应用程序引擎数据存储区.

我有一个实体员工

@PersistenceCapable(detachable = "true")
public class Employee implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -8319851654750418424L;
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY, defaultFetchGroup = "true")
    @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
    private String id;
    @Persistent(defaultFetchGroup = "true")
    private String name;
    @Persistent(defaultFetchGroup = "true")
    private String designation;    
    @Persistent(defaultFetchGroup = "true")
    private Date dateOfJoin;    
    @Persistent(defaultFetchGroup = "true")
    private String email;
    @Persistent(defaultFetchGroup = "true")
    private Integer age;
    @Persistent(defaultFetchGroup = "true")
    private Double salary;
    @Persistent(defaultFetchGroup = "true") …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine jdo datanucleus google-cloud-datastore

7
推荐指数
2
解决办法
1106
查看次数

JDO - 更新对象

我正在尝试使用Google App Engine和持久选项JDO.我想知道是否可以将瞬态对象映射到持久对象?或者使用瞬态对象来更新持久对象?

我在编码示例中看到以下代码片段来更新对象:

public void updateEmployeeTitle(User user, String newTitle) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
    Employee e = pm.getObjectById(Employee.class, user.getEmail());
    if (titleChangeIsAuthorized(e, newTitle) {
        e.setTitle(newTitle);
    } else {
        throw new UnauthorizedTitleChangeException(e, newTitle);
    }
} finally {
    pm.close();
}
}
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的,有人知道我是否可以像JPA那样更新整个对象:object.update();

所以我想要这样的事情:

public User update(User u) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    User usr;
    try {
        usr = pm.getObjectById(User.class, u.getId());
        // copy transient object u to persist object usr.
                    // on update of usr all changes in object u are …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine jdo

6
推荐指数
1
解决办法
3012
查看次数

迁移JDO中的字段

我们在其中一个项目中使用JDO.这已经运行了很长一段时间,我们自然需要稍微改变模型.

在JDO中迁移实体类中的字段时,最佳做法是什么?

enum MyEnum {
    REGULAR,
    MYOLDTYPE // Delete this
}
@PersistenceCapable
public class Entity {
    @Persistent
    MyEnum myEnumType;
    @Persistent
    String myString; // Rename this

}
Run Code Online (Sandbox Code Playgroud)

如果我删除枚举值,如果从数据库加载时已经存在异常,那么如何迁移它?

如果我想将myString重命名为myNewString,如何将列重命名为新名称?

java schema database-migration jdo datanucleus

6
推荐指数
1
解决办法
337
查看次数