@Entity
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserProfile {
@Id
private String uid;
@Column(nullable = false, length = 256)
private String filePath;
@Column(nullable = false, length = 12)
private String nickname;
@Column(nullable = false)
private boolean hasSurveyed;
@OneToOne
@MapsId
@JoinColumn(name = "uuid")
private UserAuth userAuth;
}
UserProfile userProfile = UserProfile.builder()
.uid(uid)
.filePath("default")
.nickname("aaa")
.hasSurveyed(false)
.userAuth(mappingUserAuth)
.build();
memberProfileDao.save(userProfile);
위와 같은 엔티티에 값을 insert 하는 과정에서 에러가 발생하였습니다.
다음은 에러 전문입니다.
2021-09-20 15:32:50.541 ERROR 27804 --- [nio-8080-exec-1] org.hibernate.AssertionFailure : HHH000099: an assertion failure occurred (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session): org.hibernate.AssertionFailure: null identifier
해결 과정
UserProfile userProfile = UserProfile.builder()
.filePath("default")
.nickname("aaa")
.hasSurveyed(false)
.userAuth(mappingUserAuth)
.build();
memberProfileDao.save(userProfile);
위와 같이 uid를 설정하는 코드를 빼니 문제가 해결되었습니다.
@MapsId를 통해 FK를 PK에 매핑하는 데 다시 uid를 지정해줘서 문제가 생겼을 거라고 생각합니다.
더 공부할 필요가 있을거 같습니다.
'Backend > JPA' 카테고리의 다른 글
PK를 공유하는 OneToOne 식별관계 entity 만들기 (0) | 2021.09.20 |
---|