79413675

Date: 2025-02-05 04:59:24
Score: 0.5
Natty:
Report link

Service: of ManyToOne: Many Seite:

public Lehrer createLehrer(@NonNull Lehrer lehrer) {
    if (lehrer.getStudents() != null) {
        for (Student student : lehrer.getStudents()) {
            student.setLehrer(lehrer);
        }
    }
    return lehrerRepository.save(lehrer);
}


public Lehrer updateLehrer(@NonNull Integer id, @NonNull Lehrer updatedLehrer) {
    return lehrerRepository.findById(id).map(existingLehrer -> {
        existingLehrer.setFirstName(updatedLehrer.getFirstName());
        existingLehrer.setLastName(updatedLehrer.getLastName());
        if (updatedLehrer.getStudents() != null) {
            if (existingLehrer.getStudents() != null) {
                for (Student student : existingLehrer.getStudents()) {
                    student.setLehrer(null);
                }
            }
            for (Student student : updatedLehrer.getStudents()) {
                student.setLehrer(existingLehrer);
            }
        }
        existingLehrer.setStudents(updatedLehrer.getStudents());

        return lehrerRepository.save(existingLehrer);
    }).orElse(null);
}

ManyToMany:

public Course addCourse(Course course) {
    if (course.getStudentIds() != null) {
        List<Student> students = studentRepository.findAllById(course.getStudentIds());
        course.setStudents(students);
    }
    return courseRepository.save(course);
}



public Student addStudent(Student student) {
    if (student.getCourseIds() != null) {
        List<Course> courses = courseRepository.findAllById(student.getCourseIds());
        student.setCourses(courses);
    }
    return studentRepository.save(student);
}

update evtl. wie bei Many?

Ari Code: StudentCriteriaRepository:

public interface StudentCriteriaRepository {
Page<Student> findStudentsByVornameStartsWith(String prefix, Pageable pageable);
}

StudentCriteriaRepositoryImpl:

@Repository
public class StudentCriteriaRepositoryImpl implements StudentCriteriaRepository {

@PersistenceContext
private EntityManager entityManager;


@Override
public List<Student> findStudentsByVornameStartsWith(String prefix, Pageable pageable) {
    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery<Student> query = cb.createQuery(Student.class);
    Root<Student> student = query.from(Student.class);

    
    query.select(student).where(cb.like(student.get("vorname"), prefix + "%"));




    if (pageable.getSort().isSorted()) {
        pageable.getSort().forEach(order -> {
            if (order.getProperty().equalsIgnoreCase("nachname")) {
                if (order.isAscending()) {
                    query.orderBy(cb.asc(student.get("nachname")));
                } else {
                    query.orderBy(cb.desc(student.get("nachname")));
                }
            }
        });
    } else {
        
        query.orderBy(cb.asc(student.get("nachname")));
    }

    
    TypedQuery<Student> typedQuery = entityManager.createQuery(query);
    typedQuery.setFirstResult((int) pageable.getOffset());
    typedQuery.setMaxResults(pageable.getPageSize());

    return typedQuery.getResultList();
}

StudentController:

@GetMapping("/studenten")
public List<Student> getStudentsByVorname(@RequestParam String prefix, Pageable pageable) {
    return studentRepository.findStudentsByVornameStartsWith(prefix, pageable);
}
Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • Contains question mark (0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: MisterCoder