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

原因:org.hibernate.AnnotationException:mappedBy引用了未知的目标实体属性:JPA+SpringBoot

米修平
2023-03-14

模型类

@Entity
@Table(name="RequisitionRequest")
public class Requisition {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String requestedPerson;
    private String contactDetails;
    private String appliedDate;
    private String branch;
    private String department;

    private String status;
     @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,mappedBy = "RequisitionRequest")
    private List<Nationality> nationality;
//getters and setters
}

阶级国籍

@Entity
@Table(name="nationality")
public class Nationality {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String nationality;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "nationality_id", nullable = false)
    private Requisition requisition;
//getters and setters
}

存储库类

@Repository
public interface NationalityRepository extends JpaRepository<Nationality,Long>{

}

@Repository
public interface RequisitionRepository extends JpaRepository<Requisition,Long> {

}

服务类别

@Service
public class RequisitionServiceImpl implements RequisitionService {
    @Autowired
    RequisitionRepository requisitionRepository;

    @Override
    public void save(Requisition requisition) {
        requisitionRepository.save(requisition);

    }
}

控制器类

@RestController
public class RequisitionController {
    @Autowired
    RequisitionService requisitionService;

    @Autowired
    RequisitionRepository requisitionRepository;
@PostMapping("/requisition/")
    @CacheEvict(value = "requisitions", allEntries=true)
    public ResponseEntity<Requisition> addRequisition(@RequestBody Requisition requisition) {
        System.out.print(requisition);

        Requisition requisitionR = new Requisition();
        Requisition response = new Requisition();




        requisitionR.setBranch(requisition.getBranch());
        requisitionR.setDepartment(requisition.getDepartment());
        requisitionR.setExpectedDateofJoin(requisition.getExpectedDateofJoin());

        //requisitionR.setNationality(requisition.getNationality());


        requisitionRepository.save(requisitionR);


        return new ResponseEntity<Requisition>(response, HttpStatus.OK);
    }

原因:org.hibernate.annotationException:mappedBy引用了未知的目标实体属性:org.hibernate.cfg.annotations.CollectionBinder.BindStartomanySecondPass(CollectionBinder.java:769)~[hibernate-core-5.0.12.final.jar:5.0.12.final](org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:719)~[hibernate-core-5.0.12.final.jar:5.0.12.final](org.hibernate.cfg.annotations.CollectionBinder.719)~[hibernate-core-5.0.12.final.jar:5.0.12.final]。hibernate.cfg.CollectionSecondPass.DoSecondPass(CollectionSecondPass.java:54)~[hibernate-core-5.0.12.final.jar:5.0.12.final]在org.hibernate.boot.internal.InflightMetadatacollectorimpl.java:1655)~[hibernate-core-5.0.12.final.jar:5.0.12.final]在org.hibernate.boot.internal.InflightMetadatacollectorimpl.java:1623)~[hibernate-core-5.0.12.final.final]在.jar:5.0.12.final]在org.hibernate.boot.model上.process.spi.MetadatabuildingProcess.Complete(MetadatabuildingProcess.java:278)~[hibernate-core-5.0.12.final.jar:5.0.12.final.final]在org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847)~[hibernate-EntityManager-5.0.12.final.jar:5.0.12.final]在.0.12.final.jar:5.0.12.final]

我尝试了这个网站上已经提到的解决方案,但它对我不起作用。有谁能帮我解决这个问题吗

共有1个答案

洪昱
2023-03-14

您应该在MappedBy参数中引用mapped entity中字段的名称。

像那样

mappedBy = "requisition"
 类似资料:
  • 问题内容: 我需要建立一个单向关系,但此错误似乎已映射通过引用未知的目标实体属性(该属性为父级) 这个孩子班 问题答案: 您需要将注释的属性设置为 psyQuestions 而不是 问题 。的值的属性是在关系的另一侧上的类字段的名称,在这种情况下 psyQuestions 所述的类PsyOptions的一侧。

  • 您好,我是JPA Spring boot的新手,现在我正在尝试将两个表之间的连接转换为第三个表。所以我有一个医生和病人表,其中有它的属性,一个医生可以检查每个病人,一个病人可以看望每个医生。但是在一次检查中,不能有超过一个病人和一个医生。对于医生,我想保留他们检查过的患者的信息,分别是患者的信息,以及他们检查过的医生的信息。我想创建一个名为DoctorVisit的中间表,其中我有做检查的医生的id

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

  • 我第一次使用Hibernate,并且很难让它与我的模式一起工作。 我得到了"org.hibernate.注释异常:映射通过引用未知的目标实体属性:学生。教师在Faculty.all学生”。 一些学生共用一个导师。因此,我认为学生和教师的关系是多对多的,但我被告知这是多对多的关系。 Student.java Faculty.java 数据库架构: 在看了留档后,我尝试了几种不同的注释,但我看不出我做

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

  • 我对Meal和MealGroup之间的关系有问题。Hibernate返回给我:"mappdBy引用未知的目标实体属性"。我有两个实体: 我尝试删除@Join Column和mappedBy。已创建其他表,但我想加入该列。 和 谢谢你的帮助。