【发布时间】:2018-02-03 08:31:46
【问题描述】:
我有两个实体用户和费用。
费用
@Entity
@Table(name="Expenses")
public class Expense {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private BigDecimal amount;
private Date date;
@ManyToOne
@JoinColumn(name="category_id")
private Category category;
@ManyToOne
@JoinColumn(name="mode_id")
private Mode mode;
@ManyToOne
@JoinColumn(name="user_id")
private User user;
// Getter setter and constructor
}
用户
@Entity
@Table(name="Users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String username;
private String password;
private String email;
private boolean enabled;
private String firstName;
private String lastName;
private String phoneNumber;
private String country;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE, orphanRemoval = true)
private Set<Expense> expense;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE, orphanRemoval = true)
private Set<Mode> mode;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE, orphanRemoval = true)
private Set<Category> category;
// Getter setter and constructor
}
费用存储库
public interface ExpenseRepository extends CrudRepository<Expense, Integer> {
List<Expense> findByDateBetween(@DateTimeFormat(pattern = "dd-MM-yyyy")@Param("startDate") Date startDate, @DateTimeFormat(pattern = "dd-MM-yyyy") @Param("endDate")Date endDate);
}
用户存储库
public interface UserRepository extends CrudRepository<User, Integer>{
Optional<User> findByUsername(String username);
}
注意:我使用的是 Spring Data Rest。
我可以通过 http://localhost:8080/api/users/1/expense
访问用户 1 的费用清单我还可以通过http://localhost:8080/api/expenses/search/findByDateBetween?startDate=01-02-2018&endDate=28-02-2018获取某个日期范围内的费用清单
我想要实现的是通过对用户使用“findByDateBetween”方法来访问费用列表。
此 URL 不起作用并引发 404 错误。
{
"timestamp": 1517645444489,
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/api/users/1/expense/search/findByDateBetween"
}
我做错了什么还是有更好的方法来做到这一点?
【问题讨论】:
-
日期是费用中的字段,而不是用户中的字段
标签: spring spring-data-rest spring-hateoas