0

I am trying to mix two objects together via one to many relationship.just by running the application i get an infinite loop between the processor trying to get the user then gender then user and so on.I have tried looking around but no other page has solutions that applied to my issue or upon trying to fix it worked.

error

    Hibernate: select gender0_.id as id1_18_, gender0_.gender as gender2_18_ from gender gender0_
2022-12-08 22:23:48.371 TRACE 11832 --- [nio-8080-exec-3] o.h.type.descriptor.sql.BasicExtractor   : extracted value ([id1_18_] : [BIGINT]) - [1]
2022-12-08 22:23:48.371 TRACE 11832 --- [nio-8080-exec-3] o.h.type.descriptor.sql.BasicExtractor   : extracted value ([gender2_18_] : [VARCHAR]) - [male]
2022-12-08 22:23:48.371 TRACE 11832 --- [nio-8080-exec-3] org.hibernate.type.CollectionType        : Created collection wrapper: [com.example.realtyKing.Account.GeneralUser.Model.Gender.users#1]
2022-12-08 22:23:48.372 DEBUG 11832 --- [nio-8080-exec-3] org.hibernate.SQL                        : select users0_.gender_id as gender_11_27_0_, users0_.id as id1_27_0_, users0_.id as id1_27_1_, users0_.dob as dob2_27_1_, users0_.email as email3_27_1_, users0_.email_config as email_co4_27_1_, users0_.first_name as first_na5_27_1_, users0_.gender_id as gender_11_27_1_, users0_.is_active as is_activ6_27_1_, users0_.last_name as last_nam7_27_1_, users0_.middle_name as middle_n8_27_1_, users0_.password as password9_27_1_, users0_.phone_number as phone_n10_27_1_, employee1_.id as id1_10_2_, employee1_.address as address2_10_2_, employee1_.company_id as company_5_10_2_, employee1_.date_of_termination as date_of_3_10_2_, employee1_.department_id as departme6_10_2_, employee1_.status as status4_10_2_, employee1_.user_id as user_id7_10_2_, employeege2_.id as id1_15_3_, employeege2_.area_id as area_id2_15_3_, employeege2_.city_id as city_id3_15_3_, employeege2_.employee_id as employee4_15_3_, employment3_.id as id1_16_4_, employment3_.brokage_share as brokage_2_16_4_, employment3_.employee_id as employee6_16_4_, employment3_.employee_end_date as employee3_16_4_, employment3_.employee_start_date as employee4_16_4_, employment3_.hourly_pay as hourly_p5_16_4_ from user users0_ left outer join employee employee1_ on users0_.id=employee1_.user_id left outer join employee_geographic_data employeege2_ on employee1_.id=employeege2_.employee_id left outer join employment_term employment3_ on employee1_.id=employment3_.employee_id where users0_.gender_id=?
Hibernate: select users0_.gender_id as gender_11_27_0_, users0_.id as id1_27_0_, users0_.id as id1_27_1_, users0_.dob as dob2_27_1_, users0_.email as email3_27_1_, users0_.email_config as email_co4_27_1_, users0_.first_name as first_na5_27_1_, users0_.gender_id as gender_11_27_1_, users0_.is_active as is_activ6_27_1_, users0_.last_name as last_nam7_27_1_, users0_.middle_name as middle_n8_27_1_, users0_.password as password9_27_1_, users0_.phone_number as phone_n10_27_1_, employee1_.id as id1_10_2_, employee1_.address as address2_10_2_, employee1_.company_id as company_5_10_2_, employee1_.date_of_termination as date_of_3_10_2_, employee1_.department_id as departme6_10_2_, employee1_.status as status4_10_2_, employee1_.user_id as user_id7_10_2_, employeege2_.id as id1_15_3_, employeege2_.area_id as area_id2_15_3_, employeege2_.city_id as city_id3_15_3_, employeege2_.employee_id as employee4_15_3_, employment3_.id as id1_16_4_, employment3_.brokage_share as brokage_2_16_4_, employment3_.employee_id as employee6_16_4_, employment3_.employee_end_date as employee3_16_4_, employment3_.employee_start_date as employee4_16_4_, employment3_.hourly_pay as hourly_p5_16_4_ from user users0_ left outer join employee employee1_ on users0_.id=employee1_.user_id left outer join employee_geographic_data employeege2_ on employee1_.id=employeege2_.employee_id left outer join employment_term employment3_ on employee1_.id=employment3_.employee_id where users0_.gender_id=?
2022-12-08 22:23:48.372 TRACE 11832 --- [nio-8080-exec-3] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [BIGINT] - [1]
2022-12-08 22:23:48.377 DEBUG 11832 --- [nio-8080-exec-8] org.hibernate.SQL                        : select gender0_.id as id1_18_, gender0_.gender as gender2_18_ from gender gender0_

my objects

package com.example.realtyKing.Account.GeneralUser.Model;
import com.example.realtyKing.Account.Employee.Model.Employee;
import com.example.realtyKing.Transaction.Model.Payroll;
import com.fasterxml.jackson.annotation.*;
import com.voodoodyne.jackson.jsog.JSOGGenerator;
import lombok.*;

import javax.persistence.*;
import java.sql.Date;
import java.util.*;


@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIdentityInfo(generator= JSOGGenerator.class)
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "user", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class User {



    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "first_name", nullable = false)
    private String firstName;
    @Column(name = "middle_name")
    private String middleName;
    @Column(name = "last_name", nullable = false)
    private String lastName;
    @Column(nullable = false)
    private Date dob;
    @Column(name = "phone_number", nullable = false)
    private String phoneNumber;


    @Column(nullable = false)
    private String email;

    @Column(nullable = false)
    private String password;
    @Column(nullable = false)
    private Boolean isActive;

    @Column(name = "email_config")
    private String emailConfig;

    @OneToOne(mappedBy = "user")
    private Employee employee;


    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(
            name = "user_role",
            joinColumns = @JoinColumn(
                    name = "user_id", referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(
                    name = "role_id", referencedColumnName = "id"))

    private Collection < Role > roles;



    @JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "gender_id")
    private Gender gender;










    @OneToMany(fetch=FetchType.LAZY, mappedBy="user")
    private Set<Payroll> payrolls;


    public User(String firstName, String lastName, Date dob, String phoneNumber, String email,
                String password, Collection < Role > roles, Gender gender)
    {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.dob = dob;
        this.phoneNumber=phoneNumber;
        this.email = email;
        this.password = password;
        this.roles = roles;
        this.gender=gender;
    }


}
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIdentityInfo(generator= JSOGGenerator.class)

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "gender")

public class Gender {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(nullable = false)
    private String gender;

    @JsonManagedReference
    @OneToMany(fetch=FetchType.LAZY, mappedBy="gender")
    private Set<User> users;

}

im researching into it but for some reason even when terminated and restarted the program goes to the gender controller.on the one with no extra path the base get.

@CrossOrigin(origins = {"http://localhost:3000"})
@RestController
@RequestMapping("/gender")
public class GenderController {
    @Autowired
    GenderRepository genderRepository;
    @Autowired
    AccountValidator accountValidator;
    @GetMapping
    public ArrayList<Gender> getGenders(){
        try{
            return new ArrayList<>(genderRepository.findAll());
        }
        catch(NullPointerException e){
            return new ArrayList<Gender>();
        }
    }
    @GetMapping("/{id}")
    public Gender getGender(@PathVariable Long id) {
        try{
            return genderRepository.findById(id).get();
        }
        catch(NullPointerException e){
            return new Gender();
        }
    }
    @PostMapping("/update")
    public String postGender(@RequestBody Gender gender, Errors errors) throws URISyntaxException {
        accountValidator.genderExistPass(gender.getId(),errors);
        String message="";
        try{
            message=errors.getFieldError("genderError").getDefaultMessage();
        }
        catch(NullPointerException e){

        }
        if(!errors.hasErrors()){
            genderRepository.save(gender);
        }
        return message;
    }
    @DeleteMapping("/{id}")
    public ResponseEntity deleteGender(@PathVariable Long id) {
        genderRepository.deleteById(id);
        return ResponseEntity.ok().build();
    }
}

0 Answers0