2017-05-14 6 views
0

CrudRepository (spring-data-jpa 통합의 경우)까지 확장되는 인터페이스가 있습니다.@Query에 날짜 개체를 포함하는 방법 인터페이스 메서드에서 인수를 전달하지 않고 Spring 데이터 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. 인터페이스에서 default 함수를 사용하여 updatingUser 인수를 전달하지 않으려면 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 주석을 찾습니다. 두 번째 질문

답변 현재이 spring-data-jpa에 수 없습니다. Spring 팀이 아직 조사중인 JIRA에는 ticket이 있습니다.

그러나 해결 방법을 원한다면 간단한 기준 쿼리 예제 here을 체크 아웃 할 수 있습니다.