java - 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);
解决方案
推荐阅读
- networking - VLAN 中继
- javascript - Sails js - 语言环境
- mifare - Taplinx:InvalidResponseLengthException:desfire EV1 卡上的 readData
- ios - 为什么应用程序因 NSBluetoothPeripheralUsageDescription 键的“Info.plist 文件中缺少目的字符串”而被拒绝?
- react-native - 带有本机基本按钮的裁剪图标
- python-3.x - 将不同命名的列合并为一列,填充 NaN
- excel - 无法在spring boot rest控制器中的响应实体中获取excel文件
- android - 华为设备不导入数据库
- reactjs - 登录成功后Reactjs路由到主页
- python - 该函数在python中无法正常工作