我对Spring Boot开发很新,我需要一些特殊情况的帮助。
我正在使用JPA / Hibernate Spring和CRUDrepository创建一个RESTful webservices。(Json格式)
我有以下表格跟踪:
+----+----------+-----------+
| id | filename |
+----+----------+-----------+
| 1 | public/11111/Cool |
| 2 | public/22222/Cool |
| 3 | public/33333/Cool |
| 4 | public/44444/Cool |
| 5 | public/55555/Cool |
| 6 | public/66666/Cool |
| 7 | private/77777/Cool |
| 8 | private/88888/Cool |
| 9 | private/99999/Cool |
+----+----------+-----------+
我有以下实体:
@Entity
public class Track{
@Id
@Column(name="id")
private int id;
@Column(name="filename")
private String filename;
public Track() {
super();
}
public Track(int id, String filename) {
super();
this.id= id;
this.filename= filename;
}
public int getid() {
return id;
}
public void setid(int id) {
this.id = id;
}
public String getfilename() {
return dateiName;
}
public void setfilename(String filename) {
this.filename = filename;
}
}
CRUD:
public interface TrackRepository extends CrudRepository<Track, Integer> {
List<Track> findByid(int id);
}
控制器:
@Controller
@RequestMapping(path="rest/music")
public class TrackController {
@Autowired
private TrackRepository trackRepository;
@GetMapping(path="/all")
public @ResponseBody Iterable<Track> getAllTrack() {
return trackRepository.findAll();
}
@GetMapping(path="/id")
public @ResponseBody Iterable<Track>
getTrackById(@RequestParam("id") int id){
return trackRepository.findByid(id);
}
@GetMapping(path="/public")
public @ResponseBody Iterable<Track>
getPublicTrack(){
return ...working
}
@GetMapping(path="/private")
public @ResponseBody Iterable<Track>
getPrivateTrack(){
return ...working
}
}
所以我可以通过id获取所有Track或搜索它们。
现在我的问题是如何将所有电影名称以“公共”或“私人”开头的曲目返回。
所以我得到一个json响应,如:
私人:
[
{
"id": 7,
"filename": "private/77777/Cool"
}
{
"id": 8,
"filename": "private/88888/Cool"
}
{
"id": 9,
"filename": "private/99999/Cool"
}
]
我有点需要过滤文件名字符串然后......我只是无法得到解决方案。
答案 0 :(得分:2)
你可以使用hql
来做到这一点 public interface MusicRepository extends CrudRepository<Music, Integer> {
List<Music> findByid(int id);
@Query("Select m from Music m where m.filename like '%private' or m.filename like '%public'")
List<Music> findCustom();
}