【问题标题】:Cant delete photo in JDO无法删除 JDO 中的照片
【发布时间】:2011-09-21 15:28:55
【问题描述】:

我很难做到这一点。我已经用 JDO 为谷歌应用引擎创建了一个数据库,允许注册用户上传照片。但现在我正试图删除同一张照片,但我做不到。

这是我在数据库中的课程。

public class Autenticacao 
{   
@PrimaryKey
@Persistent
String utilizador;

@Persistent
String password;

@Persistent
String cookie;

@Persistent
String loginIP;

@Persistent
public Blob photo;

我正在尝试像这样删除 blob 对象。

public static String novo(Autenticacao utilAutenticado)
{
    PersistenceManager pm = PMF.get().getPersistenceManager();

    try {

        Object e = pm.getObjectById(utilAutenticado.photo);
        pm.deletePersistent(e);

    } finally {
        pm.close();

    }
    return null;

}

我尝试了其他方法,但它似乎不起作用。我得到的最后一个错误是

“类”类“com.google.appengine.api.datastore.Blob”不可持久。这意味着它要么没有被增强,要么文件的增强版本不在 CLASSPATH 中(或者被未增强的版本隐藏),或者找不到该类的元数据/注释。”不可持久. 这意味着它要么没有被增强,要么文件的增强版本不在 CLASSPATH 中(或者被未增强的版本隐藏),或者找不到该类的元数据。”

无法真正理解为什么会发生这种情况。有人对此有任何想法吗?

【问题讨论】:

    标签: java google-app-engine persistence blob jdo


    【解决方案1】:

    不知道你似乎在那里尝试什么。这样做会更有意义

    utilAutenticado.setPhoto(null);
    

    当“utilAutenticado”是一个托管对象时(即刚刚从 PersistenceManager 获得)。任何像样的 JDO 书籍都会表明这一点

    【讨论】:

    • 那行不通。它说 Blob(不知道为什么),不能有空指针。我的解决方法(现在可以了)是再次调用例程来上传图像。
    • 我引用的是 JDO 标准。如果这不起作用,请向 Google 报告。
    • 可能是我实现错了。无论哪种方式,我都尝试使用空指针并得到了那个错误。但我感谢你的洞察力。
    • 在 JDO(以及任何合理的 Java)中,您不使用公共字段。您使用 setter 来更新字段。
    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2015-06-22
    相关资源
    最近更新 更多