JPA'Many2Many

Many2Many关系:
 Document(主动)<---->(被动)KMFile

 

class Document
主动关联设置:指定中间表,及字段。
 @ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST}, targetEntity=KMFile.class)
 @JoinTable(inverseJoinColumns={@JoinColumn(name="file_id")}, name="LINK_KMFile", joinColumns={@JoinColumn(name="linker_id")})
 public List<KMFile> getFiles() {
  return fileList;
 }

 

class KMFile
被动关联设置:只需设置mappedBy,即本体在主体中的属性(Document#getFiles)。
 @ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST}, mappedBy="files", targetEntity=Document.class)
 public List<Document> getDocuments() {
  return docList;
 }

  

使用示例:

Logger调为Fine,以输出SQL(本例使用derby),执行结果输出:

--INSERT INTO Document (ID, CREATETIME, LASTMODIFIED, TITLE, DESCRIPTION, OWNER_ID) VALUES (?, ?, ?, ?, ?, ?)
 bind => [4508551237913941891, null, null, AAA, null, null]
--INSERT INTO KMFile (ID, CREATETIME, NAME, TYPE, SIZE, LASTMODIFIED, TITLE) VALUES (?, ?, ?, ?, ?, ?, ?)
 bind => [4508551237913941892, null, null, 0, 0, null, BBB]
--INSERT INTO LINK_KMFile (file_id, linker_id) VALUES (?, ?)
 bind => [4508551237913941892, 4508551237913941891]


--SELECT ID, CREATETIME, LASTMODIFIED, TITLE, DESCRIPTION, OWNER_ID FROM Document WHERE (ID = CAST (? AS BIGINT ))
 bind => [4508551237913941891]
文档:AAA
文档-附件:BBB
--SELECT ID, CREATETIME, NAME, TYPE, SIZE, LASTMODIFIED, TITLE FROM KMFile WHERE (ID = CAST (? AS BIGINT ))
 bind => [4508551237913941892]
附件:BBB
附件-文档:AAA

 

Relationships: http://www.devx.com/Java/Article/33906/0/page/2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值