Я создал сущности Пользователь и Заказ, как показано ниже. Чего я хочу добиться, так это того, что если задано http://localhost:8080/users/username?, я хочу вернуть только данные пользователя на основе предоставленного имени пользователя. если http://localhost:8080/users/username?detail=true, Я хочу вернуть детали пользователя и детали заказа для предоставленного имени пользователя. Как мне этого добиться?
User.java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String userName;
private String password;
private String firstName;
private String lastName;
private String gender;
private String lastLoggedIn;
@OneToMany
List<Order> listOfOrder;
//constructors
//getter and setter
}
1010 * Order.java *
@Entity
public class Order
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private float amount;
private String createdAt;
private String deliveredDate;
//constructors
//getter and setter
}
Controller.java
//CREATE CUSTOMER
@RequestMapping(method = POST, value = "/create")
public ResponseEntity createCustomerDetails(@RequestParam String userName, String password, String firstName,
String lastName, String gender) {
String lastLogged = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime());
User user = new User(userName, password, firstName, lastName, gender, lastLogged);
userRepository.save(user);
return ResponseEntity.status(OK).body(user.getId() + " User were successfully saved");
}
//CREATE ORDER
@RequestMapping(method = POST, value = "/order/{userName}")
public ResponseEntity createOrder(@PathVariable ("userName") String userName, @RequestParam float amount)
{
String createdAt = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime());
String deliveredDate = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime());
User user = orderService.findUser(userName);
if (!user.equals(null))
{
Order order = new Order(amount,createdAt,deliveredDate);
user.getListOfOrder().add(order);
return ResponseEntity.status(OK).body("order details were saved under "+user.getUserName() + " "+user.getFirstName());
}
return ResponseEntity.status(NOT_FOUND).body(null + " was not found");
}
//GET THE USER DETAILS
@RequestMapping(method = GET, value = "/users/{userName}")
public ResponseEntity getUserDetail(@PathVariable("userName") String userName,
@RequestParam(defaultValue ="none", required = false) String detail) {
if (!detail.equals("none")){
return .....;
}else {
return ........;
}
}
UserRepository
@Repository
public interface UserRepository extends CrudRepository<User, Long> {
User findByUserName(String userName);
}