当前位置: 首页 > 知识库问答 >
问题:

@OneToMany有错误:映射通过引用未知的目标实体属性

苏彦君
2023-03-14

我的模型由不同类型的预算组成。这些预算具有不同的属性。我想在这些不同类型的预算之间建立一种“一对一”的关系。假设我有一个BudgetLevel1,它有很多BudgetLevel2,它也有很多BucketLevel3。所有这些BudgetLevel扩展了类预算

我的预算课程

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Budget {

@Id
private Long id;
private String name;
private BudgetTyp budgetTyp;
private Double amount;

预算级别1类

@Entity(name= "BudgetLevel1 ")
public class BudgetLevel1 extends Budget {

@OneToMany(
            **mappedBy="attBudgetLevel2 ",**
            cascade=CascadeType.ALL,
            orphanRemoval=true
            )
private List<BudgetLevel2> budgets= new ArrayList<>();
private String att1;

预算级别2类

@Entity(name= "BudgetLevel2")
public class BudgetLevel2 extends Budget {

@OneToMany(
            mappedBy="budgetlevel2",
            cascade=CascadeType.ALL,
            orphanRemoval=true
            )
private List<BudgetLevel3> budgets= new ArrayList<>();

**@ManyToOne( fetch=FetchType.LAZY,
        cascade=CascadeType.PERSIST)
@JoinColumn(name="budget_id")
Private BudgetLevel2 attBudgetLevel2;**

private String att2;

预算级别3 看起来类似

这是我得到的错误

org.springframework.beans.factory.BeanCreationException: 在类路径资源 [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class] 中创建名为“entityManagerFactory”的 bean 时出错: init 方法调用失败;nested exception is org.hibernate.AnnotationException: mappedBy reference a unknown target entity property: com.bm.ent.geschaeftsfeld.marke.BudgetLevel2.budgetlevel1 in com.bm.ent.geschaeftsfeld.BudegetLevel1.budgetlevel2 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-5.3.9.jar:5.3.9]

org . spring framework . boot . devtools . restart . restart launcher . run(restart launcher . Java:49)~[spring-boot-devtools-2 . 5 . 4 . jar:2 . 5 . 4]原因:org . hibernate . annotation exception:mapped by引用未知的目标实体属性:com . BM . ent . geschaeftsfeld . marke . budget level 2 . budget level 1 in com . BM . ent . geschaeftsfeld . budget level 1 . budget level 2

共有1个答案

鞠源
2023-03-14

< code>mappedBy通过引用实际的字段名称来工作。在编写< code > mapped by = " budget level 2 " 时,您告诉hibernate查找一个名为< code>budgetlevel2的字段,而您并没有这个字段。

您需要直接引用字段名,并且为了确保在正确的实体中具有hibernate外观,还需要指定targetEntity,如下所示:

@OneToMany(
            mappedBy="budgets",
            cascade=CascadeType.ALL,
            orphanRemoval=true,
            targetEntity = BudgetLevel2.class
            )
 类似资料:
  • 尽管已经讨论了这个错误,但我不知道如何解决我的问题。我读到这个问题可能会被映射,所以我尝试了不同的选择,但问题仍然存在 控制台: Model.java: Article.java

  • 我不熟悉Hibernate和JPA,正在尝试连接一个电影、评分员和评分的数据库。我一直收到由org.hibernate引起的错误。注释异常:通过引用映射未知目标实体属性:com.stephenalexander.projects.movierecommender.rating.rating。com.stephenalexander.projects.movierecommender.movie.m

  • 问题内容: 我在被注释的对象中建立一对多关系时遇到问题。 我有以下几点: 然后这个 和这个 我在这里做错了什么 问题答案: 该属性正在引用,而该属性是,因此出现错误消息。因此,请将您的映射更改为: 或者将实体属性更改为(这就是我要做的)。 mapledBy参考指示“在我有一个用于查找配置的集合的东西上查找名为’customer’的bean属性。”

  • 我试图通过从域对象创建表来测试一对多映射,但我看到错误mappedBy引用未知的目标实体属性。谁能看一下吗? 谢谢 hibernate.cfg.xml 错误StackTrace 谢谢你的回复。我做了您提到的更改,还做了一些其他更改,比如向main.java添加session.save(flightvenive)和insertable=false,updatable=false以及@JoinColu

  • 首先,我的课程: 使用者 角色地图。JAVA 当我尝试在服务器上运行这个我有这样的异常:错误创建bean与名称'SessionFactory'定义在ServletContext资源[/WEB-INF/类/base Beans.xml]:调用init方法失败;嵌套的异常org.hibernate.注释异常:映射通过引用一个未知的目标实体属性:com.patpuc.model.ap.users在com

  • 我正在做一个测试项目来学习Hibernate,不幸的是,我得到了这个错误,并查看了其他类似的错误,但是遵循它们并没有解决我的问题。我仍然得到这个错误。 如果有人能检查出哪里出了问题,我真的很想知道我的错误是什么。 我的模型类: } 这是第二个模型类: } 这是我的主要: 这是我的hibernate util类: 公共类HibernateUtil{私有静态最终会议工厂会议工厂=构建会议工厂(); }