例如我有一些實體,如:休眠的UniqueConstraint
@Entity
public class WorkingScheduleOverride implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Integer version;
@Column
private Date validFrom;
@Column
private Date validThru;
@Column
private Date timestamp;
@Column(unique = true)
private Date date;
要檢查該實體是由場日期我加入(唯一=真)唯一的。這可以正常工作,但前提是不要對實體使用「可關閉」方法。如果你想跟蹤這些對象的歷史,這是爲了這種情況。所以我使用'validThru'字段來指定實體何時有效。
所以我的問題是:是否有可能通過使用任何自定義驗證/註釋來檢查唯一性僅限有效實體(validThru == null || validThru < new Date())
。在數據庫
不正確的數據(兩個記錄具有相同的日期和兩者都有效):
-----------------------------------------------------------------
id |version |timestamp |valid_from |valid_thru |date |
-----------------------------------------------------------------
1 |1 |2012-01-01 |2012-01-01 |null |2013-01-01 |
-----------------------------------------------------------------
2 |1 |2012-01-01 |2012-01-01 |null |2013-01-01 |
-----------------------------------------------------------------
數據庫中正確的數據(兩個記錄是相同的日期,但第二個記錄是無效的):
-----------------------------------------------------------------
id |version |timestamp |valid_from |valid_thru |date |
-----------------------------------------------------------------
1 |1 |2012-01-01 |2012-01-01 |null |2013-01-01 |
-----------------------------------------------------------------
2 |1 |2012-01-01 |2012-01-01 |2012-06-01 |2013-01-01 |
-----------------------------------------------------------------
數據庫中的數據不正確(兩條記錄具有相同的日期和都是有效的,第二記錄變爲一月2014僅無效1號):
-----------------------------------------------------------------
id |version |timestamp |valid_from |valid_thru |date |
-----------------------------------------------------------------
1 |1 |2012-01-01 |2012-01-01 |null |2013-01-01 |
-----------------------------------------------------------------
2 |1 |2012-01-01 |2012-01-01 |2014-01-01 |2013-01-01 |
-----------------------------------------------------------------
謝謝
查看這對您是否有任何幫助方案 - http:/ /www.hibernate.org/subprojects/validator.html – Sashi
嗨薩西,這是不可能的驗證。我可以谷歌和感興趣的人誰真的已經解決了這個問題。 –