有効期間を持つエンティティをインターフェイスとして定義しておかないとおかしいですね。
public interface PeriodedEntity {
/**
* @hibernate.component
*/
public AvailablePeriod getAvailablePeriod();
}
あと、有効終了日はたいてい基準日(
トランザクションごとの
グローバル変数的なところに入れる。昨日の例ならUnitOfWorkにgetReferenceDate()でも作るか?)マイナス1秒とかだったりするので、その辺のロジックをAvailablePeriodクラスに入れてあげればいいのか。