[英]How can i pass the class object into the BroadCastReviever from the mainActivity class
[英]How can I pass a class object in postman?
我是spring和hibernate的新手,并且创建了spring mvc应用程序。 我遇到的问题是我的预订实体。 当我从邮递员中的ReservationController调用add函数时,系统收到400错误的请求,由于某些东西被认为是客户端错误(例如,格式错误的请求语法,无效的请求消息框架),服务器无法或不会处理该请求,或欺骗性请求路由)。 我相信它来自作为用户类型的hostId和guestId,因为我的usercontroller.java的add方法可以正常工作,但是,我不确定100%就是这个问题。 如果有人知道如何解决此问题,请提供帮助。
我试图像这样通过邮递员传递信息:
{
"confirmation": 4488,
"guestId": "userId": 44,
"hostId": "userId": 45,
"checkInDate": "8/27/2019",
"checkOutDate": "8/31/2019",
"city": "Las Vegas",
"state": "NV"
}
也喜欢:
{
"confirmation": 4488,
"guestId": [
"userId": 44,
"username": "username",
"password": "password",
"firstName": "name",
"lastName": "lastname",
"ssid": "WiFi",
"ssidPassword": "password!"],
"hostId": [
"userId": 45,
"username": "user2",
"password": "password",
"firstName": "name2",
"lastName": "lastname2",
"ssid": "Red",
"ssidPassword": "red$1"],
"checkInDate": "8/27/2019",
"checkOutDate": "8/31/2019",
"city": "Las Vegas",
"state": "NV"
}
但是这些都不起作用。
User.java
@Entity
@Table(name="User", schema="DB", uniqueConstraints = {@UniqueConstraint(columnNames= "Username")})
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="User_Id")
private Integer userId;
@Column(name="Username", unique=true)
private String username;
@Column(name="Password")
private String password;
@Column(name="First_Name")
private String firstName;
@Column(name="Last_Name")
private String lastName;
@Column(name="SSID")
private String ssid;
@Column(name="SSID_Password")
private String ssidPassword;
@OneToMany(mappedBy = "guestId", fetch = FetchType.EAGER)
private Set<Reservation> guestReservations = new HashSet<>();
@OneToMany(mappedBy= "hostId", fetch = FetchType.EAGER)
private Set<Reservation> hostReservations = new HashSet<>();
...
Reservation.java
@Entity
@Table(name="Reservations", schema="DB")
public class Reservation implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="Confirmation_Num")
private Integer confirmation;
@JoinColumn(name="Guest_Id")
@ManyToOne
private User guestId;
@JoinColumn(name="Host_Id")
@ManyToOne
private User hostId;
@Column(name="Check_In_Date", unique=true)
private String checkInDate;
@Column(name="Check_Out_Date", unique=true)
private String checkOutDate;
@Column(name="City")
private String city;
@Column(name="State")
private String state;
...
ReservationRepository.java
@Transactional
@EnableTransactionManagement
@Repository
public class ReservationRepository {
@Autowired
SessionFactory sf;
//Creates a new reservation
public String add(Reservation res) {
Session s = sf.getCurrentSession();
s.persist(res);
return "Reservation Requested";
}
public List<Reservation> selectAll(){
List<Reservation> res = new ArrayList<Reservation>();
Session s = sf.getCurrentSession();
Criteria cr = s.createCriteria(Reservation.class);
res = cr.list();
return res;
}
public void update(Reservation change) {
Session s = sf.getCurrentSession();
s.update(change);
}
UserRepository.java
@Transactional
@EnableTransactionManagement
@Repository
public class UserRepository {
@Autowired
SessionFactory sf;
//Allows you to create a new user
public String add(User user) {
Session s= sf.getCurrentSession();
s.persist(user);
return "user created";
}
public List<User> selectAll(){
List<User> users = new ArrayList<User>();
Session s = sf.getCurrentSession();
Criteria cr = s.createCriteria(User.class);
users = cr.list();
return users;
}
public void update(User change) {
Session s = sf.getCurrentSession();
s.update(change);
}
public void delete(User usr) {
Session s = sf.getCurrentSession();
s.delete(usr);
}
public List<User> select(String username){
List<User> user = new ArrayList<User>();
Session s = sf.getCurrentSession();
Criteria cr = s.createCriteria(User.class);
cr.add(Restrictions.eq("username", username));
user = cr.list();
return user;
}
ReservationController.java
@Controller
@RequestMapping("/Reservation")
@CrossOrigin(origins="*", allowedHeaders="*", value="*")
public class ReservationController {
@Autowired
ReservationService resServ;
@PostMapping(value="/add")
@ResponseBody
public void add(@RequestBody Reservation res) {
resServ.add(res);
}
@GetMapping("/all")
public ResponseEntity<List<Reservation>> selectAll(){
return new ResponseEntity<>(resServ.selectAll(), HttpStatus.OK);
}
@PutMapping("/update")
public void update(@RequestBody Reservation change) {
resServ.update(change);
}
@DeleteMapping("/delete")
public void delete(@RequestBody Reservation res) {
resServ.delete(res);
}
@GetMapping(value="/selectByGuest/{guestId}")
public ResponseEntity<List<Reservation>> selectAllForGuest(@PathVariable String guestId){
return new ResponseEntity<>(resServ.selectAllForGuest(guestId), HttpStatus.OK);
}
@GetMapping(value="/selectByHost/{hostId}")
public List<Reservation> selectAllForHost(@PathVariable String hostId){
return resServ.selectAllForHost(hostId);
}
}
UserController.java
@Controller
@RequestMapping("/User")
@CrossOrigin(origins="*", allowedHeaders="*", value="*")
public class UserController {
@Autowired
UserService usrServ;
@PostMapping(value="/add")
@ResponseBody
public void add(@RequestBody User usr) {
usrServ.add(usr);
}
@GetMapping(value="/all")
public ResponseEntity<List<User>> selectAll(){
return new ResponseEntity<>(usrServ.selectAll(), HttpStatus.OK);
}
@PutMapping(value="/update")
public void update(@RequestBody User change) {
usrServ.update(change);
}
@DeleteMapping(value="/delete")
public void delete(@RequestBody User usr) {
usrServ.delete(usr);
}
@GetMapping(value="/select/{username}")
public ResponseEntity<List<User>> select(@PathVariable String username){
return new ResponseEntity<>(usrServ.select(username), HttpStatus.OK);
}
@GetMapping(value="/selectSSID/{username}")
public ResponseEntity<String> selectSSID (@PathVariable String username){
return new ResponseEntity<>(usrServ.selectSSID(username), HttpStatus.OK);
}
@GetMapping(value="/selectSSIDP/{username}")
public ResponseEntity<String> selectSSIDPassword (@PathVariable String username){
return new ResponseEntity<>(usrServ.selectSSIDPassword(username), HttpStatus.OK);
}
}
对于您的案例,控制器期望User
对象的有效JSON表示形式。 您有问题的发布的是无效的JSON字符串。
要获得有效的代表,您可以执行以下操作:
User user = new User();
user.setConfirmation(123);
ObjectMapper objectMapper = new ObjectMapper();
System.out.printLn(objectMapper.writeValueAsString(user));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.