728x90
반응형
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
@Entity(name = "tbl_reply")
public class Reply extends AbstractDate {
}
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
@Table(name = "tbl_reply")
@Entity
public class Reply extends AbstractDate {
}
두 가지 모두 테이블은 " TBL_REPLY"라는 이름으로 생기지만
repository를 사용할때 다르다.
위의 경우 @Entity의 name 속성을 줬기 때문에
public interface ReplyRepository extends JpaRepository<Reply, Long>{
@Transactional
@Modifying
@Query("delete from tbl_reply r where r.board.bno = :bno")
void deleteByBno(Long bno);
}
이 처럼 Entity의 이름을 적어주어야 한다.
하지만 @Table을 사용하여 name 값을 적어주면
public interface ReplyRepository extends JpaRepository<Reply, Long>{
@Transactional
@Modifying
@Query("delete from Reply r where r.board.bno = :bno")
void deleteByBno(Long bno);
}
Entity 이름을 적어주면 사용이 가능하다.
후자가 좀 더 JPA에 맞는것이 아닌가 고민을 해본다.
Intellij에서 @Table 에 name 속성을 넣으면 빨간줄이 나오며 오류가 발생한다.
이는 Ctrl + Alt + S 를 눌러 Settings으로 들어가
Edit > Inspections > JPA > Unresolved database refereces in annotations 해제를 하면 해결이 된다.
728x90
반응형