Mapping 自定义单向连接关系JDO

Mapping 自定义单向连接关系JDO,mapping,jdo,datanucleus,Mapping,Jdo,Datanucleus,Iam试图使用Datanucleus API在两个“彼此不了解”的表之间配置M:N关系,如下所示: 书籍:作者 @PersistenceCapable public class Book{ @Persistent(primaryKey = "true") @Column(name = "isbn", allowsNull = "false") private int userId; private String isbnCode; private St

Iam试图使用Datanucleus API在两个“彼此不了解”的表之间配置M:N关系,如下所示:

书籍:作者

@PersistenceCapable
public class Book{
    @Persistent(primaryKey = "true")
    @Column(name = "isbn", allowsNull = "false")
    private int userId;

    private String isbnCode;

    private Str5ing title;

    @Persistent(table="BOOK_AUTHOR")
    @Join(column="isbn")
    @Element(column="authorId")
    Collection<Author> bookAuthors = new HashSet<Author>();
}


@PersistenceCapable
public class Author{
    @Persistent(primaryKey = "true")
    @Column(name = "author_id", allowsNull = "false")
    private int authorId;

    private String firstName;

    private Str5ing lastName;

    @Persistent(table="BOOK_AUTHOR")
    @Join(column="authorId")
    @Element(column="isbn")
    Collection<Book> bookAuthors = new HashSet<Book>();
}
@PersistenceCapable
公共课堂用书{
@持久(primaryKey=“true”)
@列(name=“isbn”,allowNull=“false”)
私有int用户id;
私有字符串isbnCode;
私人STR5名称;
@持久性(table=“BOOK\u AUTHOR”)
@加入(column=“isbn”)
@元素(column=“authorId”)
集合,我希望创建第三个表作为联接表,并带有一个新的Id列

困扰我的是两个问题:

  • 未创建上面链接中提到的标识列
  • 我想自定义第三个表来添加更多的信息。我该怎么做?比如说,如果我想添加发行日期或出版商名称,那么我需要控制BOOK_AUTHOR表。(虽然我试图通过PersistanceAware注释来完成此任务,但我不确定这是否可行,因为表级别的注释意味着我无法修补该表中的任何列,我只能查看信息
  • 我如何克服问题2?我可以接受一两个版本的问题1,但这也需要解决

    JDO的Zens能帮忙吗?

    需要解决的问题

  • 您错过了链接2个关系字段的
    mappedBy
    ;您需要添加它,这样它才是双向的。如果这应该是2个独立的1-N关系,那么我不知道如何共享联接表,因为从一侧插入的数据将与从另一侧插入的数据不同步
  • “联接表”不能有“更多信息”,因为您的Java模型没有“更多信息”。JDO(或JPA)只能映射您在Java中的模型。如果您需要额外的数据,则首先需要将其放入Java模型中,这通常意味着添加一个包含它的中间持久类。请参阅他们的GitHUb
  • 不确定你所说的“上面链接中提到的身份栏没有被创建”是什么意思。你是指链接中的“ADPT_PK_IDX”吗?不要认为这适用于所有情况


    对于M-N关系,我会参考与您相反的1-N关系,什么是“环境”?抱歉。更正给作者。代码中的描述反映了一个专有的功能场景。对于第2点,我如何才能做到这一点?您是否表示我构建了一个@PersistenceCapable类,然后添加从它到两端的映射?关于第1点,在什么情况下生成ID?我通过文档进行了搜索,但是我不太清楚。对于2,是的,他们的GitHub上有一个示例显示了1。我不确定我希望最后一条评论的链接更突出!!如果你不介意的话,我可以把它放在一个新的答案中吗?链接现在添加到了答案中