SpringBoot JPA 질의가 사용자 정의 엔티티 클래스에 매핑됨
2204 단어 jpaspringbootquery
장면
간단한 밤을 들어라: 예를 들어 사용자 실체류가 하나 있다@Data
@Entity
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userName;
private String password;
}
그리고 이메일의 실체 클래스가 있어요.@Data
@Entity
public class Email{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String account;
private String code;
private boolean active;
}
다른 테이블과 사용자 간의 연결을 유지하기 위한 UserRelation 실체 클래스@Data
@Entity
public class UserRelation{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId;
private Long emailId;
}
각 엔티티 클래스에는 CRUD를 구현하기 위한 Repository 인터페이스가 있습니다.
마지막으로 분야별 UserPo가 있습니다.@Data
@Entity
public class UserPo{
private String userName;
private String account;
}
그러면 이때 UserRelation Repository에서 FindUserPo(Long userId) 방법을 만듭니다. 어떻게 findUserPo가 UserPo 대상을 되돌릴 수 있습니까?
public interface UserRelationRepository extends JpaRepository {
UserPo findUserPo(Long id);
}
실현
JPA는 SQL 문장을 사용자 정의하여 조회할 수 있으며, 조회 문장은 원생 SQL 문장(원생 SQL 문장은 @Query 주석에 nativeQuery =true)을 통해 조회할 수도 있고, JPQL을 통해 조회할 수도 있다.
여기에서는 JPQL(Java Persistence Query Language)을 통해 조회하는데 그 특징은 원래 SQL 문장과 유사하며 완전히 대상을 대상으로 하고 클래스 이름과 속성을 통해 접근합니다. 테이블 이름과 테이블의 속성이 아니라.
이렇게 해서 UserPo가 수정된 후에 이렇게.public interface UserRelationRepository extends JpaRepository {
// nativeQuery = true
@Query(value = "SELECT new com.xxx.xxx.bean.po.UserPo(u.userName, e.account) "+
"FROM UserRelation ur JOIN User u ON ur.userId = u.id"+
"JOIN Email e ON ur.emailId = e.id WHERE ur.userId = ?1 ")
UserPo findUserPo(Long id);
}
@Data
@Entity
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userName;
private String password;
}
@Data
@Entity
public class Email{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String account;
private String code;
private boolean active;
}
@Data
@Entity
public class UserRelation{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId;
private Long emailId;
}
@Data
@Entity
public class UserPo{
private String userName;
private String account;
}
public interface UserRelationRepository extends JpaRepository {
UserPo findUserPo(Long id);
}
JPA는 SQL 문장을 사용자 정의하여 조회할 수 있으며, 조회 문장은 원생 SQL 문장(원생 SQL 문장은 @Query 주석에 nativeQuery =true)을 통해 조회할 수도 있고, JPQL을 통해 조회할 수도 있다.
여기에서는 JPQL(Java Persistence Query Language)을 통해 조회하는데 그 특징은 원래 SQL 문장과 유사하며 완전히 대상을 대상으로 하고 클래스 이름과 속성을 통해 접근합니다. 테이블 이름과 테이블의 속성이 아니라.
이렇게 해서 UserPo가 수정된 후에 이렇게.
public interface UserRelationRepository extends JpaRepository {
// nativeQuery = true
@Query(value = "SELECT new com.xxx.xxx.bean.po.UserPo(u.userName, e.account) "+
"FROM UserRelation ur JOIN User u ON ur.userId = u.id"+
"JOIN Email e ON ur.emailId = e.id WHERE ur.userId = ?1 ")
UserPo findUserPo(Long id);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
eclipse로 테이블에서 JPA 엔티티 만들기eclipse에서 테이블에서 JPA 엔티티를 만드는 방법을 참고하십시오. 1. 엔티티를 만들려는 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 > 테이블에서 JPA 엔티티를 선택합니다. 2. "연결 추가"를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.