如何在mysql数据库中查询特定实体

时间:2019-06-03 10:17:56

标签: java rest jpql

我试图弄清楚如何在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();
}

1 个答案:

答案 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();