iteye_19186
2009-06-18 13:44
浏览 882
已采纳

jpa 关系映射 必须建立数据库外键吗?

比如有两个表Orders(订单表),orderItem(订单项),我创建的时候只分别建了主键。没建任何外键。 我只在Entity中定义OneToMany 和ManyToOne 等映射关系。这样可以正常查询到映射的对象信息吗?

也就是说,抛开数据库设计规范来说,我的数据库表关系完全依赖jpa映射,而不是依赖数据库表中建立的外键(我没创建任何外键关联,只是在表中建有另外表的主键字段,如orderItem表中有orders_id)。 这样从程序上来说可以正常跑吗?
[b]问题补充:[/b]
这些表是我自己建立的,建立的时候没加外键,只是在实体类里里加映射关系,目的是方便获取相关联的对象。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • laitaogood 2009-06-18 14:05
    已采纳

    完全可以的,而且这样不依赖数据库,提高了可移植性

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • wanghaolovezlq 2009-06-18 14:22

    有些级联查询更新删除可能会出问题

    评论
    解决 无用
    打赏 举报
  • ywbanm 2009-06-18 14:38

    你定义了像OneToMany ManyToOne 这样的声明

    在JPA中配置成自动生成表 你就能看到了

    JPA会根据需要自动给你生成这些外键关联关系的

    如果你自己建立这些表,而不加必要的外键,程序当然会有问题

    评论
    解决 无用
    打赏 举报
  • laitaogood 2009-06-18 15:10

    [quote]这些表是我自己建立的,建立的时候没加外键,只是在实体类里里加映射关系,目的是方便获取相关联的对象。 [/quote]
    可以不在物理表中加上外键的,你在实体类中增加了外键关联关系,JPA会自动识别出对应的一对多的两个实体类之间具有外键关联关系,所以你的做法是可行的。

    评论
    解决 无用
    打赏 举报
  • ywbanm 2009-06-18 15:11

    也可能和具体的实现有关系

    你用的是什么JPA实现?

    在你不加外键的情况下,可以获得关联对象的信息么?

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题