엔 티 티 클래스 에 대한 JPA (HIBERNATE) 의 의문
@ Column 표 시 를 쓸 때 JPA 는 두 가지 방법 이 있 습 니 다. 하 나 는 해당 하 는 속성 에 표시 하 는 것 이 고, 다른 하 나 는 해당 하 는 속성 에 표시 하 는 get 방법 입 니 다.현재 ENTITY 에 영구적 으로 사용 하지 않 으 려 는 속성 이 있다 면 @ Transient 표 시 를 표시 하여 이 속성 이 영구적 으로 사용 되 지 않 음 을 표시 해 야 합 니 다.그러나 구체 적 으로 사용 할 때 저 는 문제 하 나 를 발 견 했 습 니 다. 그것 은 현재 ENTITY 에 getXXX 방법 이 있 지만 해당 하 는 속성 이 없 으 면 구체 적 인 merge 나 persist 방법 을 실행 할 때 프로그램 이 잘못 될 수 있 습 니 다.따라서 getXXX 방법 이 있 고 해당 하 는 속성 이 없 을 경우 이 방법 에 @ Transient 표 시 를 표시 해 야 합 니 다.
예 는 다음 과 같다.
@Entity
@Table(name="xxx")
public class NewClass implements Serializable{
private Integer id;
private String name;
private String abc;
@Id
@Column(name="id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// abc , Transient
@Transient
public String getAbc() {
return abc;
}
public void setAbc(String abc) {
this.abc = abc;
}
// , , Transient ,hibernate jpa
// newName , , ,
// org.hibernate.PropertyNotFoundException: Could not find a setter for property newName in class com.egf.entity.NewClass
@Transient
public String getNewName(){
return name+abc;
}
}
getNewName 방법 에 대해 get 으로 시작 하지 않 으 면 프로그램 이 순조롭게 통과 할 수 있 습 니 다. 그렇지 않 으 면 @ Transient 로 표시 해 야 합 니 다.
다시 한 번 말씀 드 리 지만 이 문 제 는 제 가 hibenate JPA 에서 발 견 했 습 니 다. 다른 JPA 실현 에 똑 같은 문제 가 있 는 지 테스트 가 필요 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.