【发布时间】:2017-11-13 01:29:16
【问题描述】:
解决方案:我解决了,这是新的 RestUser.java,如果它将来可以帮助任何人
@RequestMapping(value="/rate", method=RequestMethod.POST)
public ResponseEntity rate(@RequestBody Rating rating, Principal principal){
User user = userService.findByUsername(principal.getName());
Rating ratingAVG = ratingService.findOne(user.getId());
ratingAVG.setFood(rating.getFood());
ratingAVG.setService(rating.getService());
user.setRating(ratingAVG);
ratingAVG.setUser(user);
userService.save(user);
return new ResponseEntity("Rated!", HttpStatus.OK);
}
问题
我在插入/更新具有外键的对象时遇到问题。我有一个名为 Rating 的表,看起来像这样。我想添加一个唯一的 Rating 对象,它使用principal.getName() 获取当前 user_id。我正在使用 Advanced REST 客户端对其进行测试,并且已经登录
+------------------------------------------------+
| Rating |
+------------------------------------------------+
| id | food | service | user_id |
+----+-------------+----------------+------------+
| 1 | 5 | 5 | 1 |
+----+-------------+----------------+------------+
用户.java
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="Id", nullable=false, updatable=false)
private long id;
private String username;
private String password;
private String firstName;
private String lastName;
@OneToOne(cascade=CascadeType.ALL, mappedBy="user")
@JoinColumn(name="user_id", unique=true)
private Rating rating;
Rating.java
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private int food;
private int service;
@OneToOne(cascade = CascadeType.ALL)
@JsonIgnore
private User user;
RatingServiceimpl.java
@Service
public class RatingServiceImpl implements RatingService {
@Autowired
private RatingRepository ratingRepository;
@Override
public Rating save(Rating rating) {
return ratingRepository.save(rating);
}
}
UserRest.java
@RestController
@RequestMapping("/user")
public class UserRest {
@Autowired
UserService userService;
@Autowired
RatingService ratingService;
@RequestMapping(value="/rate", method=RequestMethod.POST)
public ResponseEntity rate(@RequestBody Rating rating, Principal principal){
User user = userService.findByUsername(principal.getName());
user.setRating(rating);
rating.setUser(user);
userService.save(user);
return new ResponseEntity("Rated!", HttpStatus.OK);
}
}
这就是我得到的,它添加了一个新对象,而我只是希望它更新现有的对象。
谢谢!
【问题讨论】:
标签: java mysql spring hibernate rest