package stduy.datajpa.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import stduy.datajpa.entity.Member;
import java.util.List;
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
List<Member> findHelloBy();
@Query(name = "Member.findByUsername")
List<Member> findByUsername(@Param("username") String username);
@Query("select m from Member m where m.usernames = :username and m.age = :age")
List<Member> findUser(@Param("username") String username, @Param("age") int age);
}
Spring Data JPA에서 Query문을 쓰고 싶을때가 있다.
@Entity
@NamedQuery(
name="Member.findByUsername",
query="select m from Member m where m.username = :username"
)
public class Member {
@Id
@GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
그때에는 @Query(name = "Member.findByUsername")처럼 엔티티에 선언한
NamedQuery를 사용해도 되지만
@Query("select m from Member m where m.usernames = :username and m.age = :age")
직접 입력하는 것도 가능하다.