たとえば、次のようなエンティティがあります。
@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;
エンティティが追加したフィールド日付によって一意であることを確認するには(unique = true)。これは問題なく機能しますが、エンティティに対して「クローズ可能な」アプローチを使用しない場合のみです。これらのオブジェクトの履歴を追跡したい場合に使用します。そのため、「validThru」フィールドを使用して、エンティティが有効な時間まで指定しています。
したがって、私の質問は次のとおりです。カスタム検証/注釈を使用して一意性ONLY VALID entitiesを確認することは可能ですか(validThru == null || validThru < new Date())
?
データベースのデータが正しくありません (2 つのレコードの日付が同じで、どちらも有効です):
-----------------------------------------------------------------
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 |
-----------------------------------------------------------------
データベースの正しいデータ (2 つのレコードは同じ日付ですが、2 番目のレコードは無効です):
-----------------------------------------------------------------
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 |
-----------------------------------------------------------------
データベースのデータが正しくありません (2 つのレコードは同じ日付で両方とも有効で、2 番目のレコードは 2014 年 1 月 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 |
-----------------------------------------------------------------
ありがとう