加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 当我有@ManyToMany时如何设置ForeignKey名称

发布时间:2020-12-14 05:10:00 所属栏目:Java 来源:网络整理
导读:我正在使用JPA类创建数据库. 如果我们有ManyToOne关系,我们可以覆盖ForeignKey名称,如下所示: @ManyToOne@JoinColumn(foreignKey = @ForeignKey(name = "FK_COUNTRY"))private Country country; 在DB中,我们将得到如下结果: 好的,那很好好的结果! 但是当
我正在使用JPA类创建数据库.

如果我们有ManyToOne关系,我们可以覆盖ForeignKey名称,如下所示:

@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "FK_COUNTRY"))
private Country country;

在DB中,我们将得到如下结果:

好的,那很好好的结果!

但是当我有@ManyToMany时,我不会设置自己的FK名称.

如何创建这个?我尝试这样的东西,但它不起作用:

@ManyToMany(cascade = CascadeType.PERSIST,fetch = FetchType.LAZY)
@JoinTable(name = "NEW_TABLE",foreignKey = @ForeignKey(name = "FK_TEST"))

或者这样的东西:

@JoinTable(
        name="NEW_TABLE",joinColumns=
            @JoinColumn(name="ID1",referencedColumnName="ID",foreignKey = @ForeignKey(name = "FK_DEV_ID")),inverseJoinColumns=ID2",foreignKey = @ForeignKey(name = "FK_DEV_ZONE"))
    )

或这个:

@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name="NEW_TABLE_2",joinColumns=
                @JoinColumn(name="ID1",foreignKey = @ForeignKey(name = "FK_1")
                ),inverseJoinColumns=
                @JoinColumn(name="ID2",foreignKey = @ForeignKey(name = "FK_2")
                ),foreignKey = @ForeignKey(name = "FK_1"),inverseForeignKey = @ForeignKey(name = "FK_2")
    )  

private List<MyObject> deviceZones;

他们不工作

我使用这个版本的jar:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.6.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.6.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate.common</groupId>
    <artifactId>hibernate-commons-annotations</artifactId>
    <version>4.0.5.Final</version>
</dependency>


<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.1.2.Final</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.0.6.RELEASE</version>
</dependency>

而我的java版本是1.8

解决方法

我猜你那里有一些瓶子冲突.
我建议这样做:

>删除以下jar:hibernate-commons-annotations和hibernate-entitymanager
>然后看看here你怎么可以改变外键的名称

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读