Hibernate - 外键引用错误的列数(一对多,多对一)

时间:2014-08-01 14:46:12

标签: hibernate jpa spring-data

我是Hibernate和JPA的新手,所以希望这是基本的东西。我得到了一个例外:"来自Bar的外键引用Foo的列数错误"。我不确定为什么。有任何想法吗?谢谢!

public abstract class Foo extends AbstractPersistable{

    @Id @GeneratedValue
    @Column(name = "FooId")
    private Long foo_id;

    @OneToMany(mappedBy= "foo")
    private Set<Bar> bars;
}

public abstract class Bar extends AbstractPersistable{
    @Id @GeneratedValue
    @Column(name = "BarId")
    private Long bar_id;

    @ManyToOne
    @JoinColumn(name = "FooId", nullable = false, insertable = false, updatable = false)
    private Foo foo;
}

2 个答案:

答案 0 :(得分:1)

在这种情况下使用@JoinColumn是多余的。试试这样的代码:

public abstract class Foo extends AbstractPersistable{

  @Id @GeneratedValue
  @Column(name = "FooId")
  private Long foo_id;

  @OneToMany(mappedBy = "foo")
  private Set<Bar> bars;
}

public abstract class Bar extends AbstractPersistable{
  @Id @GeneratedValue
  @Column(name = "BarId")
  private Long bar_id;

  @ManyToOne
  private Foo foo;
}

答案 1 :(得分:0)

原来我正在扩展一个已经提供了Integer id的类。我的id是Long类型,因此它正在寻找两个外键。