我试图弄清楚如何在mysql数据库中查询特定歌曲。想法是按歌曲的ID查找歌曲,因此,如果我通过ID,则一首歌曲应出现在浏览器窗口中。
public class Song {
private int id = 0;
private String title;
private String artist;
private String album;
private int released;
public Song() {
}
public Song(int id, String title, String artist, String album, int released) {
this.id = id;
this.title = title;
this.artist = artist;
this.album = album;
this.released = released;
}
@Id
@Column(name = "songID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
return id;
}
SongWebService.java
@GET
@Path("/{id}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Response getSongById() {
Object song = null;
try {
em.getTransaction().begin();
song = em.createQuery("SELECT s FROM Song s WHERE s.songID = :id", Song.class).getSingleResult();
em.getTransaction().commit();
} catch (NoResultException e) {
Response.noContent().build();
} catch (Exception ex) {
ex.printStackTrace();
em.getTransaction().rollback();
} finally {
em.close();
}
return Response.ok(song).build();
}
答案 0 :(得分:1)
创建查询对象并设置参数值,然后获取单行
TypedQuery<Song> query = em.createQuery("SELECT s FROM Song s WHERE s.songID = :id", Song.class);
query.setParameter(1, id); //not sure what id
Song song = query.getSingleResult();