2017-05-14 4 views
0

CrudRepositoryspring-data-jpa統合用)のインターフェイスがあります。@Queryに日付オブジェクトを埋め込む方法インターフェイスメソッドの引数を渡さずにSpring Data JPA

私は方法があると仮定し、私は以下のようにしたいと考えています。

@Modifying 
@Query("update UserData u set u.lastUpdatedDate = #{new Date()}, u.lastUpdatedBy = ?2, lock=true where u.userId = ?1"); 
public void lockUser(Long userId, User updatingUser); 

は今、私の代わりに、動的日付オブジェクトを作成して渡すようにSpELの使用を作りたかった私は、すべての機能にlastUpdatedDateを渡したくない二つの質問

  1. を持っています。

  2. updatingUser引数をdefault関数を使用してスキップする場合は、インターフェイスでSpring ELをサポートしていますか?はいの場合はどうですか?

default機能は次のような意味を持ちます。

public interface myInterface extends CrudRepository<T,ID>{ 
    default UserDetails getAdminObj(){ 
     UserDetails systemAccount= new UserDetails(); 
     systemAccount.setUserID(-120); 
     return systemAccount; 
    } 
} 

ありがとうございました。

答えて

0

最初に質問にお答えください。

エンティティが更新されるたびにエンティティのプロパティを更新する場合は、@PreUpdateアノテーションを使用できます。

UserエンティティはlastUpdatedDateというプロパティを持つとします。あなたはuserエンティティを更新明示的更新lastUpdatedDateたびに持っていけないという注釈付き

@Entity 
public class User { 

    ... 

    private Date lastUpdatedDate; 

    ... 

    //Setters getters 

    @PreUpdate 
    public void updatedAt() { 
     this.lastUpdatedDate= new Date(); 
    } 

} 

また、エンティティプロパティを永続化する前に自動的に入力するのに役立つ@PrePersist注釈も表示されます。あなたの2番目の質問

回答は、現在、これはspring-data-jpaでは不可能です。このためのticketがJIRAにありますが、これはまだSpringチームによって調査中です。

ただし、回避策が必要な場合は、簡単な条件クエリの例hereをチェックアウトすることができます。

関連する問題