数据库中已经有了一些有联系的表,但是表之间没有建立外键关系,现在使用jpa注解@OneToOne进行关联查询,但是启动项目后自动使数据库中的表建立了外键关系,如何才能只在Entity中定义OneToMany 和ManyToOne 等映射关系,而不在数据表中建立外键关系。

解决方案 »

  1.   

    jpa本来就是和表进行映射的只不过是从单纯的配置文件改为注解,原理都一样的,肯定是和数据库表进行关联的
      

  2.   

    我就只是想在实体类中注解@onetoone来查询相关的数据,不想在数据库表中设置外键关系,因为设置外键会有很多麻烦。也就是说,抛开数据库设计规范来说,我的数据库表关系完全依赖jpa映射,而不是依赖数据库表中建立的外键(我没创建任何外键关联,只是在表中建有另外表的主键字段),但是现在程序已启动就会在数据表中加外键关系。求指教
      

  3.   

    只要在实体类中加上注解关联是可以的,也不会加上关联关系的,我一直用都没问题,什么版本的jpa,没出现过你的那种会自动加上外键,你是直接生成表的还是已经存在表了
    或是可以不要用关联,直接用sql查询然后生成实体,
      

  4.   

    1.3的jpa
    我是数据库中已经存在表了,反正每次启动就会在数据库表中加外键关系
    实体类中是这样注解的
    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="exec_dept",referencedColumnName="dept_sn",insertable=false,updatable=false)
    private DicDeptCode dicDeptCode;求指点一下
      

  5.   

    2.0么?
    我用的是spring data jpa(spring data common 1.5,spring data jpa 1.3)
    这个还没有2哦
      

  6.   

    楼主解决没啊? 我也遇到该问题。就是想设计 数据库中不要去 建立 外键关系,但是在 jpa操作中 配置关联关系
      

  7.   

    我之前遇到过类似问题,是因为我在application.xml文件中配置了以下
    <prop key="hibernate.hbm2ddl.auto">update</prop>改为<prop key="hibernate.hbm2ddl.auto">none</prop>就好了