2017-05-07 28 views
1

如何從具有時間戳類型的列的彈簧數據JPA的表中檢索數據。數據庫爲MySQLSpring Data JPA基於時間戳列提取數據

列定義

last_update timestamp 

域對象

public class Film implements Serializable { 
    @Column(name="last_update") 
    private Timestamp lastUpdate; 

    public Timestamp getLastUpdate() { 
     return this.lastUpdate; 
    } 

    public void setLastUpdate(Timestamp lastUpdate) { 
     this.lastUpdate = lastUpdate; 
    } 
} 

春數據JPA代碼

@Repository               
public interface FilmRepository extends CrudRepository<Film, Integer> 
{ 
    Film findByLastUpdate(Date date); 
} 

服務類

@Override 
public Film readFilmbyDate(){ 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    Film film=null; 
    try { 
     film= filmRepository.findByLastUpdate(sdf.parse(sdf.format(new Date()))); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return film; 
} 

總是返回null,因爲數據庫列有timestamp(2017-05-07 06:45:19),基本上我想返回所有記錄的最後更新日期是今天/當前日期。

回答

0

將您的方法更改爲findByLastUpdateBetween(Date date, Date after),並在您要查找的日期的開始和結束時通過。如果你使用的是java 8,你可以添加一個默認的方法來創建一個輸入日期的日期,並調用findLastUpdateBetween,否則,你可以使用custom implementation

+0

謝謝Jens,它工作,我認爲這是時間戳列的唯一方法,我不能直接使用相等 – onlinejava

+0

隨着時間戳,你必須使用範圍查詢。如果讀取性能很關鍵,那麼可以引入一個額外的日期列,可能由功能索引支持(不知道MySQL是否具有這樣的功能) –