Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa @ManyToMany中的@OrderColumn违反约束_Jpa_Java 8_Many To Many_Eclipselink - Fatal编程技术网

Jpa @ManyToMany中的@OrderColumn违反约束

Jpa @ManyToMany中的@OrderColumn违反约束,jpa,java-8,many-to-many,eclipselink,Jpa,Java 8,Many To Many,Eclipselink,我得到了连接表的主键约束冲突,该约束由EclipseLink为以下类自动创建: @Entity public class Link { @ManyToMany @OrderColumn private List<Node> nodes; ... @Entity public class Node { @ManyToMany(fetch = FetchType.EAGER, mappedBy = "nodes") private List<Li

我得到了连接表的主键约束冲突,该约束由EclipseLink为以下类自动创建:

@Entity public class Link {
    @ManyToMany @OrderColumn
    private List<Node> nodes; ...

@Entity public class Node {
    @ManyToMany(fetch = FetchType.EAGER, mappedBy = "nodes") 
    private List<Link> links; ...
@实体公共类链接{
@ManyToMany@OrderColumn
私有列表节点。。。
@实体公共类节点{
@ManyToMany(fetch=FetchType.EAGER,mappedBy=“nodes”)
私有列表链接。。。
如果我在其节点的第一个和第二个位置插入具有相同节点的链接,则会发生冲突。事实上,有一个生成的索引具有节点ID和链接ID(缺少节点的顺序)。我如何影响EclipseLink或其他提供程序来ommit或扩展此约束

使用:Glassfish 4.1.1、EclipseLink 2.6.4或2.7.0(交叉发布)、Java 8尝试添加以下内容:

@org.hibernate.annotations.ForeignKey( name = "none") 

在映射的两侧。

在哪里定义联接表?另外,一个带有表的ddl的小sql也可以用于JPA(约定优先于配置)我不需要定义它。连接表链接_节点是在启动时自动创建的,但具有上述不需要的约束。可以通过设置javax.persistence.schema-generation.database.action来创建或扩展persistence.xml中的表。发布连接表的DDL?插入连接表的SQL在哪里?列表是有序列表还是索引列表?EclipseLink不支持集合中的重复项。您可以尝试手动删除生成的DDL中的约束,然后从那时起使用脚本,但可能还有其他问题-请确保测试它是否对您足够有效。感谢您的想法!因为我正在使用EclipseLink/JPA,所以我s没有可用的Hibernate批注。但是,自JPA 2.1以来,有一个不推荐使用的@javax.persistence.ForeignKey批注无法应用于该批注。因此,解决方案可能类似于使用\@JoinColumn或\@JoinTable。@JoinColumn(ForeignKey=@ForeignKey(ConstraintMode.no_CONSTRAINT))不起作用