IDE

[IntelliJ] @Table 사용하기

quedevel 2020. 4. 4. 23:09
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
반응형