2016-12-20 9 views
1

私はかなり春に新しくなっていますので、間違った用語が表示されていない可能性があります。春日付で日付を照会する

私が探しているクエリは、親オブジェクトを取得し、タイムスタンプが特定の日付でないすべての子オブジェクトを削除する必要があります。

Parent Id field1 field2 

Child: Id parentId field 1 timestamp (datetime) 

私はいくつかのアプローチを試みましたが、何も動作していないようです。

代わりに私のような何かを試みることができる:

FindAllChildsByIdAndTimestamp(int id, Date date) 

をし、データを空の親を埋めます。しかし、イベントハットは機能しません。 アイデア何が間違っているのですか? 最高とありがとう

+0

JPQLバルクは「c.parent =チャイルドcから削除:親とc.someDate =:!someDate」の線に沿って削除するかについて –

答えて

0

私は2つの要求を分離することによって問題を解決しました。

public interface ChildRepository extends CrudRepository<Child, Serializable> { 
List<child> findAllBytimeStampBetweenAndParent(Date dayBegin, Date dayEnd, Parent parent); 

そして、私が直接クエリを使用している可能性の代替として親

Parent parent = this.getById(id); 

    // Convert Date Type 
    DateTime dayTimeEnd = new DateTime(date); 
    dayTimeEnd = dayTimeEnd.plusHours(23); 
    dayTimeEnd = dayTimeEnd.plusMinutes(55); 
    Date dayEnd = dayTimeEnd.toDate(); 

    // Get all Tracking Data of this Date 
    List<Child> ChildList = this.childRepository.findAllBytimeStampBetweenAndParent(date, dayEnd, parent); 

にそれを起因します。 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

0

あなたはこれに親を持って来る必要はありません。あなたがする必要があるのは、子テーブルに対するクエリを作成し、where句がparentId isとtimestampであるクエリをそのテーブルに対して生成することだけです。あなたはSpringを使っていると言いましたが(どのバージョンのBTW?)、あなたのDB(Spring Data、Hibernate、JPA、JBC)にアクセスするために何を使用しているのかは言及していませんでした。私は、Hibernateにあなたの例を与える:

sessionFactory.getCurrentSession().createCriteria(Child.class) 
       .add(Restrictions.eq("parentId", yourParentId)) 
       .add(Restrictions.gt("timestamp", date1)) 
       .add(Restrictions.le("timestamp", date2)) 
       .list(); 

日付1は、あなたの一日の真夜中であるとdate2のは翌日の深夜です。これはあなたの子供のリストを提供する必要があります

+0

これはので、私はそれが関連しているかを確認していないHibernateのコードですここに。 –

+0

OPでは、照会にどのツールが使用されているか指定しませんでした。そこで、私は原則として、その解決方法を説明し、Hibernateに例を与えました –

関連する問題