Size: a a a

2021 January 14

А

Артём Курилко... in pro.jvm
спасибо
источник

A

Alchemist in pro.jvm
@Table(name = "person")
public class Person {
   @Id
   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="person_id_seq")
   @Column(name = "id")
   private Integer id;

   @OneToMany(cascade=CascadeType.ALL, mappedBy = "personId")
   private Set<Phone> phones;
}

@Table(name = "phone")
public class Phone {
   @Id
   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="phone_id_seq")
   @Column(name = "id")
   private Integer id;

   @Column(name = "person_id", nullable = false)
   private Integer personId;
}

// тест проходит
@Test
void test1() {
   Person person = PersonMother.personNullId();
   Person dbPerson = personRepository.save(person);
   assertThat(dbPerson.getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
}

// падает с ошибкой вставки (на findAll??)
@Test
void test2() {
   Person person = PersonMother.personNullId();
   Person dbPerson = personRepository.save(person);
   assertThat(dbPerson.getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
   personRepository.findAll(); // ERROR: null value in column "person_id" violates not-null constraint
}

// в сущности, которая вернулась при сохранении, personId = null
@Test
void test3() {
   Person person = PersonMother.personNullId();
   Person dbPerson = personRepository.save(person);
   assertThat(dbPerson.getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getPersonId()).isNotNull(); // assertion failed
}


Что за дичь? )
Этот hibernate вообще production-ready? )
источник

RM

Roman Meerson in pro.jvm
ну добро пожаловать в славный мир хибернейт кешей)
источник

RM

Roman Meerson in pro.jvm
попробую описать что происходит
источник

RM

Roman Meerson in pro.jvm
в тесте 2 перед тем как вызывается findAll хибернейт понимает что ему нужно очистить кеш и выплюнуть все в базу, отсюда получается violate потому что это ругается база
источник

D

Dima in pro.jvm
Alchemist
@Table(name = "person")
public class Person {
   @Id
   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="person_id_seq")
   @Column(name = "id")
   private Integer id;

   @OneToMany(cascade=CascadeType.ALL, mappedBy = "personId")
   private Set<Phone> phones;
}

@Table(name = "phone")
public class Phone {
   @Id
   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="phone_id_seq")
   @Column(name = "id")
   private Integer id;

   @Column(name = "person_id", nullable = false)
   private Integer personId;
}

// тест проходит
@Test
void test1() {
   Person person = PersonMother.personNullId();
   Person dbPerson = personRepository.save(person);
   assertThat(dbPerson.getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
}

// падает с ошибкой вставки (на findAll??)
@Test
void test2() {
   Person person = PersonMother.personNullId();
   Person dbPerson = personRepository.save(person);
   assertThat(dbPerson.getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
   personRepository.findAll(); // ERROR: null value in column "person_id" violates not-null constraint
}

// в сущности, которая вернулась при сохранении, personId = null
@Test
void test3() {
   Person person = PersonMother.personNullId();
   Person dbPerson = personRepository.save(person);
   assertThat(dbPerson.getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
   assertThat(dbPerson.getPhones().iterator().next().getPersonId()).isNotNull(); // assertion failed
}


Что за дичь? )
Этот hibernate вообще production-ready? )
1. saveAndFlush
2. я бы маппинг сделал bidirectional
источник

D

Dima in pro.jvm
3. Никто не читает доки
источник

D

Dima in pro.jvm
источник

RM

Roman Meerson in pro.jvm
+1 про доки)
источник

RM

Roman Meerson in pro.jvm
посмотрел что hibernate в этом году будет 20 лет……. это к вопросу о production readyХДД
источник

AD

Alexandr Daineko 🇧🇾... in pro.jvm
Dima
3. Никто не читает доки
это как с инструкциями к бытовой технике, пока не сломается инструкция просто лежит на полке и греет душу, что она есть.
источник

A

Artjom Kalita in pro.jvm
еще интересное название билдера - PersonMother
источник

AD

Alexandr Daineko 🇧🇾... in pro.jvm
нужно читать голосом озвучки из 90-х VHS фильмов =)
источник

A

Artjom Kalita in pro.jvm
Особенно годно замечание про продакшен реди хибера - ну да обычно так всегда бывают, что это библиотеки поломанные, а не рукопроблемы  =)
источник

AE

Alexandr Emelyanov in pro.jvm
Alexandr Daineko 🇧🇾
это как с инструкциями к бытовой технике, пока не сломается инструкция просто лежит на полке и греет душу, что она есть.
Чаще она тупо выбрасывается
источник

SP

Sergey Pushkin in pro.jvm
Нужна консультация с настройкой zuul в реактивном приложении с webflux.

spring-cloud-starter-netflix-zuul работает может работать в связке с spring-boot-starter-webflux? Не нашел на гитхабе примеров

Сейчас при добавлении зависимости и конфигов zuul при запуске падает исключение r.v.m.c.c.a.ControllerExceptionHandler   : Exception: internal error. Message is: No primary or default constructor found for interface org.springframework.http.server.reactive.ServerHttpRequest
источник

AE

Alexandr Emelyanov in pro.jvm
Sergey Pushkin
Нужна консультация с настройкой zuul в реактивном приложении с webflux.

spring-cloud-starter-netflix-zuul работает может работать в связке с spring-boot-starter-webflux? Не нашел на гитхабе примеров

Сейчас при добавлении зависимости и конфигов zuul при запуске падает исключение r.v.m.c.c.a.ControllerExceptionHandler   : Exception: internal error. Message is: No primary or default constructor found for interface org.springframework.http.server.reactive.ServerHttpRequest
возьми spring-cloud-gateway
источник

SP

Sergey Pushkin in pro.jvm
Alexandr Emelyanov
возьми spring-cloud-gateway
спасибо, попробую
источник

MO

Max Olsson in pro.jvm
Никто не знает, почему может возникать ошибка
java.lang.ClassNotFoundException: com.sun.jdi.request.EventRequest

https://docs.oracle.com/javase/8/docs/jdk/api/jpda/jdi/com/sun/jdi/request/class-use/EventRequest.html

Данный класс нужен библиотеке javassist, которая используется jsoniter'ом.

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b25, mixed mode)
источник

MO

Max Olsson in pro.jvm
Хм, ошибка решается подключением tools.jar из папки с jdk.
источник