首页 > 解决方案 > Sprint JPA:如何将多对一对象添加到 MySQL

问题描述

使用 Java Spring JPA。

我有一个称为事件的一对多类和一个称为用户的多对一类。

我将如何尝试使用 URL 将用户添加到事件中?我似乎无法让它工作。我已经在我的 Event 和 User 类上标记了注释。我所有的其他查询似乎都有效。我也想保留多对一的关系。

这是它抛出的异常(忽略两者)

Error creating bean with name 'eventRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: Using named parameters for method public abstract int com.mthree.repositories.EventRepository.addUserByIdtwo(int,java.lang.String,int) but parameter 'Optional[userId]' not found in annotated query 'INSERT INTO USER u.userId, u.userName FROM Event e inner join e.users u ON e.eventId = u.eventId WHERE e.eventId=:eventId'!

EventRestController.java

@GetMapping("/adduser{userName}/{eventId}")
    public ModelAndView addUserById(@PathVariable("userId") int userId, @PathVariable("userName") String userName, @PathVariable("eventId") int eventId){

        int numDeleted = eventService.addUserById(userId, userName, eventId);

        ModelAndView mv = new ModelAndView();

        if(numDeleted>0) {

        mv.setViewName("successfuledit");

        }
        else {
            mv.setViewName("failededit");
        }

        return mv;
    }

事件服务.java

    public int addUserById(int userId, String userName, int eventId) {
        return eventRepository.addUserById(userId, userName, eventId);
    }

EventRepository.java

@Query("INSERT INTO USER u.userId, u.userName FROM Event e inner join e.users u ON e.eventId = u.eventId WHERE e.eventId=:eventId")
    @Modifying
    @Transactional
    public int addUserById(@Param("userId") int userId, @Param("userName") String userName,@Param("eventId") int eventId);

标签: javaspringspring-data-jpa

解决方案


推荐阅读