【问题标题】:DataNucleus JDO reverse datastore 1:1 mapping with foreign keysDataNucleus JDO 使用外键反向数据存储 1:1 映射
【发布时间】:2013-02-12 18:34:18
【问题描述】:

我有一个 DataNucleus 项目,我正在使用 JDO 将数据存储区反向映射到我的类。我很容易做到这一点:

package com.sample;

import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(table = "source")
public class Source {

    @PrimaryKey
    private String source_id;
    private Topic topic_id;
    private String url;
    private String description;

    // getters and setters

}

public class Topic {
    private String topic_id;
    private String topicName;
    private String topicDescription;

    // getters and setters

}

topic_id 是另一个表 topic 的外键,其中包含一个 id、一个 topicName 和一个 topicDescription。

我知道使用注释可以返回 topic.id、topic.topicName 和 topic.topicDescription 以及 topic_id。我只是不知道怎么做,而且我发现文档有点神秘,尤其是对于反向映射。

任何人都可以伸出援助之手并提供一个例子吗?我尝试过使用 @ForeignKey 和 @Element 注释,但还没有运气。

谢谢!

【问题讨论】:

    标签: orm jdo datanucleus jdoql


    【解决方案1】:

    如果“topic_id”是另一个对象的 FK(未发布),那么 Java 类中应该有一个 Topic 对象字段,就像任何正常的 1-1(面向对象)关系一样

    【讨论】:

    • 很有趣,我不需要指定任何注释?
    • 注释或 XML 的使用取决于用户的喜好。 DN 文档非常清楚您如何定义 1-1 关系(使用注释或 XML)。可持久类型的字段默认为持久(因此不需要显式元数据,除非想要设置列名等)
    • 嗯,请看我上面更新的代码。它现在返回,没有任何 topic_id 或主题中的信息。可能还有我想念的东西吗?谢谢...
    • 这就是日志的用途。您使用了一些保密的持久性代码,因此您查看了日志
    • 日志中的SELECT语句好像没有包含外键字段。
    猜你喜欢
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2018-02-05
    相关资源
    最近更新 更多