본문 바로가기
반응형

IT/Java299

[Error] Invalid value type for attribute 'factoryBeanObjectType': java.lang.String pom.xml 에서 다른것들은 그대로 두고 springboot 만 버전을 업그레이드 하니 Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 이런 에러가 발생하였다. Mybatis를 사용중인데 springboot 버전에 따른 사용할수 있는 Mybatis 버전이 있는듯 하다. https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/3.0.3 여기에서 자세히 살펴보니 springboot 3.2.2 버전에서는 mybatis 3.0.3 을 사용해야한다. (3.0.2 버전을 사용중이었어서 에러가 발생하였고 버전업을 하면서 해결 하였다.) 2024. 3. 27.
[Error] java.lang.IllegalArgumentException: Illegal character in scheme at index 0: localhost Java 내에서 다른 controller 로 Uri 를 보내게 될때 java.lang.IllegalArgumentException: Illegal character in scheme at index 0: localhost 의 에러가 발생 하였다. 사용한 uri 값은 ..이상 생략 .uri("127.0.0.1:8080/test/test") ..이하 생략 이렇게 사용을 하였다. 기본적이고 당연한 부분이었지만 실수로 프로토콜 타입에서 http or https 를 적어주지 않아서 발생한 에러였다. .uri("http://127.0.0.1:8080/test/test") 로 변경하여 해결 2024. 3. 26.
RestClient 사용 이전 포스팅에서 타 서비스를 호출 하기 위한 몇가지 방법에 대해서 다룬 포스팅이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 하지만 추가로 새로운 방법이 있어서 소개하는 포스팅을 작성한다. 스프링 3.2.2 버전에서 새롭게 추가된 기능인 RestClient 이다. 공식 홈페이지는 아래와 같다. https://spring.io/projects/spring-boot#overview Spring Boot spring.io 간단한 사용법은 아래와 같다. (post 기준) ..이상 생략 import org.springframework.web.client.RestClient; ..이상 생략 TestBuilderInDto testBuilderInDto = new TestBuilderInDto(); RestC.. 2024. 3. 25.
Int 형 나누기 결과 소수점 n 자리까지 얻어오는법 우선 아래와 같은 코드가 있는데 결과를 먼저 예상해보자. ... public static void main(String[] args){ int n1 = 1; int n2 = 3; System.out.println(n1/n2); } 수학의 나누기와는 다르게 / 는 값만을 가져오기에 0이 출력이 된다. 물론 % 를 사용해서 값 + 나머지 를 해도 되지만, 형태를 double로 변경해주면 소수점까지 출력이 된다. ... public static void main(String[] args){ int n1 = 1; int n2 = 3; System.out.println( (double) n1/n2); } 하지만 이러면 무한소수가 나오게 된다. 0.3333333 원하는 값이 소수점 n 자리까지라면 아래와 같이 St.. 2024. 2. 22.
[JPA] 일부 컬럼만 가져오기 JPA에서 findBy 명령어를 사용하여 entity 를 가져오곤 한다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 만약 entity 에 컬럼이 10개면 10개 컬럼 모두 가져오고 불필요한 컬럼들을 모두 가져오는 경우가 있다. 필요한 컬럼만 가져오는 방법에 대해서 다루려고 한다. 기존 로직은 아래와같다. List findAll(); ///////////////// @Entity public class TestEntity{ @Id public String id; public String name; public String addr; ... } 여기서 id와 name만을 가져오고 싶다면? 필요한 컬럼들만 interface로 다시 만들어준다. public interface TestInterface{ Str.. 2024. 2. 14.
[JPA] Could not set field value [POST_INSERT_INDICATOR] value by reflection 에러 이전 포스팅에서 JPA 복합키 관련 포스팅을 다룬 글이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 복합키를 사용하고 서비스를 실행하는데 제목과 같은 에러가 나왔다. Could not set field value [POST_INSERT_INDICATOR] value by reflection 해결 방법은 PkId Class에 있는 동일한 컬럼들에 대해서도 @Column annotation을 적어줘야한다. 풀어서 설명하면 Dto 에는 pk 컬럼과 아닌 컬럼들을 모두 명시해줬고 PkId Class에는 pk인 컬럼들만 모아서 적어주었을텐데, Dto에 @Column(name ="test") 이런식으로 Column annotation을 적어줬다면 PkId Class에 있는 동일한 컬럼들에 대해서도 @Col.. 2024. 2. 13.
[JPA] ConverterNotFoundException: No converter found capable of converting from type 에러 native query 사용 중 select 결과에 대한 조회를 해와야하는데 org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type 이런 오류를 만났다. 찾아보니 매핑이 정상적으로 이루어지지 않은 문제였고, dto/entity 를 class가 아닌 interface로 생성하니 해결 되었다. AsIs @Data public class TestDto { String id; String.. 2024. 2. 12.
[Lombok] @Slf4j 사용법 (LoggerFactory 대신) 자바에서 log 찍는 방법에 대해서는 다양하게 있다. 참고포스팅에 log 와 lombok 에 관한 글을 읽고 오면 더욱 도움이 될것이다. lombok에서는 DTO 에 대한 기능 뿐 아니라 log 에 대해서도 제공하는 기능이 있는데 @Slf4j 이다. class단위에 annotation으로 설정할수 있고 사용 예시는 아래와 같다. LoggerFactory 를 이용하는 방법 public class JpaService { private final Logger log = LoggerFactory.getLogger(getClass()); public String testJpa(String id) { log.info("test"); .. 이하 생략 @Slf4j 를 이용하는 방법 @Slf4j public class .. 2024. 2. 8.
[JPA] save 시 select 쿼리 발생 (Persistable 의 isNew 사용) 이전 포스팅에서 dirty checking 관련해서 글을 다룬적이 있다. 자세한 내용은 아래 참고 포스팅을 참고 바란다. 엔티티를 가지고 작업을 하게 될 경우 매번 select 을 하고 update를 하거나 insert 를 할때 더티 체킹을 한다면 만약 bulk insert를 jpa에서 하게 될 경우엔 어떻게 해야할까? 별도의 작업이 없이 읽어서 insert를 하기만 하면된다. 코드는 아래와 같이 간단하다. TestTable ent = TestTable.builder() .id(id) .nameValue("test") .gender(1) .build(); repo.save(ent); 이대로 실행을 하면 [interceptor] requestURI : /test/entitysetnew Hibernate: .. 2024. 2. 7.
반응형