모든 Entity는 BaseEntity를 상속한다.
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import lombok.Getter;
@Getter
@EntityListeners(value = { AuditingEntityListener.class })
@MappedSuperclass
abstract class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime regDate;
@LastModifiedDate
private LocalDateTime updateDate;
}
Cart - Product
N:1관계(LAZY) 일때
Cart를 조회하고,
product = getProduct();
product.getName()을 실행하면,
(LAZY) 그 때 product를 DB에서 조회한다. 초기화.
이후부터는 product.getId() 등을 호출하면, 방금 조회한 DB에서 데이터를 가져온다.
그런데, product.getRegDate()를 실행하면, 에러가 발생한다.
java.lang.IllegalAccessException: Class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor can not access a member of class org.example.entity.BaseEntity with modifiers "public"
프록시 객체에서는 @MappedSuperclass 내의 public 함수에 접근이 안되나?? 왜????
해결:
일단, Cart를 조회할 때, @EntityGraph를 이용해서 Product를 같이 조회하면 되긴 하는데....
*리플렉션에서 답을 찾을 수 있을듯....TODO.. (또는 해결할 어노테이션이 있을까?
java.lang.IllegalAccessException: Class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor can not access a member of class org.example.entity.BaseEntity with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(Unknown Source)
at java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:56)
at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:95)
at org.example.entity.Product$HibernateProxy$vulS6Qf5.getRegDate(Unknown Source)
해결::::::::
BaseEntity class를 public으로.ㅠㅠ
'Java > Spring' 카테고리의 다른 글
lombok 같은 library를 만들면 (0) | 2021.05.17 |
---|---|
[deploy] Github Action / S3 / CodeDeploy / EC2 (0) | 2021.05.14 |
[security] 정리 (0) | 2021.05.06 |
[security] getPassword() is null (0) | 2021.05.06 |
[Spring data JPA] 조회: Entity + 연관 Entity(LAZY) + Pageable (0) | 2021.04.24 |