DB 8

[ JPA ] 엔티티 toString 무한 호출

1. JPA 상황: Team(팀 table)과 department(파트 table) join 을 하려고 한다. 원인 : 단방향이 아닌 양방향 연관관계를 맺기 때문에 이 관계를 맺은 두 엔티티가 서로 toString을 호출하면서 무한반복된다. error Message : Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate 패키지.toString() 코드 관계 Team -> department : 1:N department -> Tean : N:1 에러 해결 : ToStringBuilder을 사용하여 해결하였다.

DB/JPA 2021.07.18

JPA DDL

JPA에서는 DB 테이블을 자동으로 만들어주는 기능이 있다. 우리가 user와, team으로 구성하게 된다면 team에는 user 여러명이 속할 수 있지만, user에는 사람 하나당 하나의 team에만 속할 수 있다. 이 조인을 해주는 곳은 userVo는 ManyToOne teamVo는 OneToMany를 볼 수 있다. 그다음에 application.yml파일에 아래 jpa: generate-ddl: true hibernate: ddl-auto: create generate-ddl : true hibernate.ddl-auto :create 후에 코드를 실행을 하게되면 아래와 같이 테이블이 만들어 진 것을 확인 할 수 있다. generate-ddl : 서버 시작 때 DDL문을 생성의 여부 hibernat..

DB/JPA 2021.02.17

mybatis configuration location 설정

- mybatis sql을 작성하다가, 에 vo로 받아오기 위해, 설정을 해주지 않는 이상 우리는 vo가 있는 위치를 일일이 표기하기 어려워 찾아보았다. mybatis-config 설정파일을 해주기 위해서는, sessionFactory.setConfigLocation(resolver.getResource("mybatis config 경로 " ));를 추가해주면 된다. @Bean(name="sqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("testServiceDataSource") DataSource dataSource) throws Exception { final SqlSessionFactoryBean sessionFac..

DB 2020.12.16

[JPA] Infinite recursion 에러 발생

이번 JPA 개발을 하는 도중 nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion 에러가 발생하였다. 찾아본 결과 내가 JPA를 위해 클래스 끼리 서로 관계를 맺을려고 testA클래스 (부모) testB클래스 (자식) testA클래스 @OneToOne(targetEntity = TestB.class) @JoinColumn("hm_name") TestB testB; testB클래스 @JoinColumn("hm_email") @OneToOne(targetEntity = TestA.class) TestA testA; 으로 사용하면 서로 양방향 참조를 한다. 이렇게 된다면 이것들을 매핑하는 과정 속에..

DB/JPA 2020.10.12

JPA limit

JPA를 이용해 쿼리를 작성할 때 1개의 데이터만 불러와야 할 때가 있었다. 그리하여 나는 @Query 어노테이션을 이용했다. @Query("select h from testVo h where h.hmName = :hmName limit 1") 하지만 limit에서 에러가 발생했다. 이유는 Hibernate의 HQL 문법에서는 SQL의 LIMIT을 지원하지 않기 때문에 발생한 일이었다. 스택오버플로우에 서칭해본 결과 이렇게 구현하니 최대 한 개의 데이터를 뽑을 수 있었다. @Query(value="select h from testVo h where h.hmName = :hmName ") List findAllByhmName( String hmName ,Pageable pageable); default L..

DB/JPA 2020.10.07
728x90
반응형