I have a controller try to search with optional field. The JPA entity class is defined as:
package demo;
import javax.persistence.*;
@Entity
public class UploadFile {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
public UploadFile() {
}
public UploadFile(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "UploadFile{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
The controller is defined in the following code:
@RequestMapping(value = "/searchFile", method = RequestMethod.GET)
public @ResponseBody
List<UploadFile> searchFile(@RequestParam("id") Optional<Integer> id, @RequestParam("name") Optional<String> name) {
UploadFile newFile = new UploadFile();
if (id.isPresent()) {
newFile.setId(id.get());
}
if (name.isPresent()) {
newFile.setName(name.get());
}
System.out.println("new File: " + newFile);
//uploadFileRepository is a JpaRepository Class
return List<UploadFile> files = uploadFileRepository.findAll(Example.of(newFile));
}
The database has one record:
ID NAME SIZE TYPE
1 index 111 html
When '/searchFile?id=1' hits server, the console prints:
new File: UploadFile{id=1, name='null'}
The http returns an empty array:
I want the /searchFile?id=1
to return the record with id 1,
and also /searchFile?name=index
to return the record with id 1 too.
Is there anything I did wrong?
Thanks!
UploadFile
class to your question. – Balefire