전체 글
-
Spring - JPA @OneToMany java.lang.StackOverflowError: nullSpring 2022. 11. 4. 19:31
Caused by: java.lang.StackOverflowError: null JPA에서 @OneToMany로 두 엔티티간 join을 걸어줄 경우에 StackOverflowError가 발생하는 경우가 있습니다. @Data @Entity public class Person { @OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE) private List phoneList; @OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE) private List carList; } @Data @Entity public..
-
Spring - JPA cannot simultaneously fetch multiple bagsSpring 2022. 11. 4. 19:16
Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 하나의 entity에 한개 이상의 FetchType.EAGER 를 사용할 때 발생합니다. @Entity public class Person { @OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE) private List phoneList; @OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE) private List carLis..
-
Java - Long.valueOf() 변환시 null 처리하는 방법Java 2022. 9. 30. 17:30
Long 값을 가지고 처리 시 null값이 들어가면 안되는 경우에 null safe 하게 처리하는 방법입니다. public static Comparator getComparator() { return Comparator.comparing(p -> Long.valueOf(p.getAge()), Comparator.naturalOrder()); } 예를 들어 Person object에서 age를 비교하는 comparator를 만드는 경우입니다. p.getAge()가 null인 경우 exception이 발생하게 됩니다. 이런 경우에 p.getAge()가 null일때 default 값을 넣어서 처리가 필요합니다. public static Comparator getComparator() { return Compa..
-
Java - Optional if else statement로 사용하는 방법Java 2022. 9. 27. 19:30
Java의 Optional 클래스는 NPE(NullPointerException)을 방지하도록 도와주는 클래스입니다. Optional 클래스를 살펴보면 ifPresent(), isPresent(), get(), orElse(), orElseGet() 등의 메소드가 있습니다. 메소드를 살펴보면 값이 있을 때, 아니면 값이 없을 때에 대한 처리만 있어서 if else 구문처럼 처리를 하려면 어떻게 해야될지 고민이 될 때가 있습니다. Optional 값이 있거나 없을 때 동시에 처리하는 방법에 대해서 알아 보겠습니다. 1. isPresent() if (optional.isPresent()) { car = optional.get(); } else { car = new Car(); } optional 값이 존재하..
-
Java - Set 순회하는 방법 (iteration)Java 2022. 9. 23. 14:56
자바에서 Set 자료구조 반복문을 어떻게 구현하는지 알아보겠습니다. 1. for loop import java.util.HashSet; import java.util.Set; class Example { public static void main(String[] args) { Set sets = new HashSet(); sets.add("A"); sets.add("B"); sets.add("C"); sets.add("D"); for (String str: sets) { System.out.println(str); } } } 2. iterator while loop import java.util.HashSet; import java.util.Set; import java.util.Iterator; cla..
-
Spring - LazyInitializationException: could not initialize proxy – no SessionSpring 2022. 9. 20. 01:32
JPA를 쓰다보면 이런 에러메시지를 볼 때가 있습니다. 에러메시지 Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.domain.CompanyEntity.personList, could not initialize proxy - no Session Entity 코드 @Entity @Table(name = "company") public class Company implements Serializable { @Id @Column(name = "id") private Long id; @OneToMany(fetch = FetchType.LAZY, mappe..
-
Java - List의 마지막 요소 얻는 방법Java 2022. 9. 7. 19:07
자바 리스트에서 마지막 element를 가져오는 방법을 알아보겠습니다. list에서 마지막 요소(element)를 가져오는 코드 list.get(list.size() - 1); 예제 import java.util.ArrayList; class Example { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); System.out.println("Last Element: " + getLastElement(list)); } public static E getLastElement(ArrayList list) { if ((..