【问题标题】:JPA OneToMany The Many With same model and same columnJPA OneToMany The Many 具有相同的模型和相同的列
【发布时间】:2014-04-06 02:45:03
【问题描述】:

Article.java

@OneToMany
@JoinColumn(name = "refId", referencedColumnName = "id")
private List<Attachment> attachmentList;

Book.java

@OneToMany
@JoinColumn(name = "refId", referencedColumnName = "id")
private List<Attachment> attachmentList;

Attachment.java

private String refId

文章和书籍有很多附件,并与同一列“refId”连接。 Attachment Entity如何编码?

【问题讨论】:

  • Read.
  • 只需创建简单的地址实体就可以了 - 如果您想要单向关系,它就可以工作。据我了解,您的 Order 是一个具有一些继承策略的抽象类,其中您有 CardOrder 和 FoodOrder ref 以及 Address Reference ,这只会为您的孩子获取/设置地址:FoodOrder 和 CarOrder;
  • 感谢您的回复。如果我执行上述代码,它会提示Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: xxx.xxx.xxx.Attachment column: ref_id (should be mapped with insert="false" update="false")

标签: java jpa one-to-many many-to-one


【解决方案1】:

这对我来说真的没有意义:通过查看附件记录,我怎么知道 refId 列所指的是一本书还是一篇文章?您应该有单独的列来存储附件与书籍和文章的关系。

如果 Book 和 Article 共享密钥,这意味着 Book 和 Article 应该共享一个父类,那么它应该看起来像:

class Document {
    @Id
    Long id;

    @OneToMany
    List<Attachment> attachments;
}

class Article extends Document {
    //....
}

class Book extends Document {
    //....
}

【讨论】:

  • 谢谢您的回复。如果我这样做,它不能创建关系键,然后保存文章不能保存附件列表,必须手动保存附件。 articleDao.save(entity);attachmentDao.save(entity.getAttachments()).how 只能做articleDao.save(entity);
  • 那是另一个问题:看看关于级联插入/更新/删除的主题
猜你喜欢
  • 2018-08-06
  • 1970-01-01
  • 2012-08-20
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2022-08-05
  • 1970-01-01
  • 2020-01-30
相关资源
最近更新 更多