반응형
매핑되지 않은 클래스 변수를 최대 절전 모드로 무시
나는 hibernate가 주석으로 표시된 클래스 변수만 고려한다고 생각했다.@Column
그런데 이상하게도 오늘 변수를 추가했을 때(어느 열에도 매핑되지 않고 클래스에 필요한 변수만) 해당 변수를 select 문에 열 이름으로 포함하려고 하고 오류를 발생시킵니다.
'필드 리스트'의 알 수 없는 열 'team1_.agencyName'
우리 반 -
@Entity
@Table(name="team")
public class Team extends BaseObject implements Serializable {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(length=50)
private String name;
@Column(length=10)
private String code;
@Column(name = "agency_id")
private Long agencyId;
private String agencyName; //note: not annotated.
}
참고로 위의 클래스는 여러 개의 매핑이 있는 다른 클래스에서 사용합니다.
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name="user_team",
joinColumns = { @JoinColumn( name="user_id") },
inverseJoinColumns = @JoinColumn( name="team_id")
)
public Set<Team> getTeams() {
return teams;
}
왜 이런 일이 일어나는 거죠?
JPA는 특별히 마킹하지 않는 한 클래스의 모든 속성을 사용합니다.@Transient
:
@Transient
private String agencyName;
그@Column
주석은 순전히 옵션이며 자동 생성된 열 이름을 재정의할 수 있습니다.또,length
의 특성@Column
테이블 정의를 자동 생성할 때만 사용되며 런타임에는 영향을 주지 않습니다.
검색 엔진을 통해 이 게시물을 발견한 사람들에게 이 문제의 또 다른 가능한 원인은 잘못된 패키지 버전을 가져오는 것입니다.@Transient
. 반드시 Import 합니다.javax.persistence.transient
다른 패키지는 안 돼요
배치@Transient
개인 밭에서 일하는 게터였어요
private String name;
@Transient
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
언급URL : https://stackoverflow.com/questions/4662582/make-hibernate-ignore-class-variables-that-are-not-mapped
반응형
'itsource' 카테고리의 다른 글
문자열에서 모든 문자 제거 (0) | 2022.08.30 |
---|---|
mathjax + vue 재렌더링 방정식 (0) | 2022.08.30 |
목록의 초기 렌더링에 있는 목록 항목(스태거)에 애니메이션을 적용합니다. (0) | 2022.08.30 |
메서드 --> 액션 --> 변환 --> 상태 문제 (0) | 2022.08.30 |
입력 Vuej의 소수점 수 제한 (0) | 2022.08.30 |