BG Development


  Reply to this topicStart new topicStart Poll

> Spring Boot JPA Hibernate проблемче
Sasho92
Публикувано на: 09-07-2017, 21:10
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 15
Регистриран на: 15.01.15



тука създвам едно просто ентити с мапинг таблица, качил съм диаграмата по-надолу
CODE

@Entity(name = "students")
public class Student {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;
   @Basic
   private String name;
   @ManyToMany
   @JoinTable(name = "student_friend", joinColumns = @JoinColumn(name = "student_id",referencedColumnName = "id"),
   inverseJoinColumns = @JoinColumn(name = "friend_id", referencedColumnName = "id"))
   private Set<Student> students;
   public Student() {
   }

   public Student(String name) {
       this.name = name;
   }
//публик гетери и сетери си има
}

Имам си и едно репозиториi
CODE

@Repository
public interface StudentRepo extends JpaRepository<Student, Long> {
}

И класа, от който стартира приложението
CODE

@Component
public class CommandLineStarter implements CommandLineRunner {
   private final StudentRepo studentRepo;

   @Autowired
   public CommandLineStarter(StudentRepo studentRepo) {
       this.studentRepo = studentRepo;
   }

   @Override
   public void run(String... strings) throws Exception {
       //Бкарвам си 3 Student обекта по най-бързия начин, до тука добре
       Student student = new Student("pesho");
       this.studentRepo.saveAndFlush(student);
       student = new Student("gosho");
       this.studentRepo.saveAndFlush(student);
       student = new Student("mitko");
       this.studentRepo.saveAndFlush(student);

       /*
       И тука примерно искам да взема един студент и да ми взема Set от friends който има
       да му адна фриенд и в оная мапинг таблица student_friend да са появи един ред които е
      student_id = 1 friend_id = 2 Но хвърля грешка, описъл съм я веднага след кода
      */
       this.studentRepo.findOne((long) 1).getStudents().add(this.studentRepo.findOne((long) 2));

   }
}

На ето този ред
CODE
this.studentRepo.findOne((long) 1).getStudents().add(this.studentRepo.findOne((long) 2));

Се хвърля следната грешка
CODE

Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: testing.models.Student.students, could not initialize proxy - no Session


Това мнение е било редактирано от Sasho92 на 09-07-2017, 21:23

Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка
PMEmail Poster
Top
RoYaL
Публикувано на: 10-07-2017, 10:25
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 849
Регистриран на: 21.08.05



Маркирай компонента като транзакционен
PMEmail Poster
Top
Sasho92
Публикувано на: 10-07-2017, 16:21
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 15
Регистриран на: 15.01.15



QUOTE (RoYaL @ 10-07-2017, 10:25)
Маркирай компонента като транзакционен

Благодаря ти много

Това мнение е било редактирано от Sasho92 на 10-07-2017, 16:48
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0