【问题标题】:Unable to build Hibernate SessionFactory; nested exception无法建立 Hibernate SessionFactory;嵌套异常
【发布时间】:2020-02-04 10:19:53
【问题描述】:

在我的 Spring Boot 应用程序中,我有两个模型。实际上试图实现ManyToMany 关系。

答:

@Entity
public class A {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private Set<B> b=new HashSet<>();
    public A() {

    }
}

乙:

@Entity
public class B {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private Set<A> a=new HashSet<>();
    public B() {

    }

}

当我尝试编译时,这给了我错误,说: init 方法调用失败;嵌套异常是 javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory;嵌套异常是 org.hibernate.MappingException:无法确定类型:java.util.Set,在表:a,列:[org.hibernate.mapping.Column(b)]

完整日志:here

【问题讨论】:

  • 您是否定义了您的关系ManyToOne 或其他? id 对于B 具有SetA 也没有意义,反之亦然。如果您的意思是ManyToMany 关系,它就不会那样工作
  • 我这两天就报错了,你能发布一个答案吗?是的,我正在尝试创建ManyToMany 关系@HoussemBadri
  • 如果你想实现@ManyToMany关系,你在哪里实现的?
  • 如果要添加ManyToMany 关系,则需要添加一个中间表,该关系将更改为OneToMnayManyToOne。看看这个链接:baeldung.com/hibernate-many-to-many
  • @HoussemBadri 我试过@JoinTable(name ="...",joinColumns = @JoinColumn(name = "..."), inverseJoinColumns = @JoinColumn(name = "...")) ...这有效,并创建了表格。 但问题是我不知道如何从该表中检索数据? 而且我不确定它们是否正在更新..

标签: spring spring-boot jpa spring-data-jpa


【解决方案1】:

答:

@Entity
public class A {
    ...
    @ManyToMany(cascade = CascadeType.ALL)//don't use fetch here
    private List<B> b=new ArrayList<>();
}

乙:

@Entity
public class B {
    ...
    @ManyToMany(cascade = CascadeType.ALL)//don't use fetch here
    private List<A> a=new ArrayList<>();
}

不要在 OneToManyManyToMany 上使用 fetch,这意味着 *ToMany

【讨论】:

    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多