У меня есть два приведенных ниже pojos, которые имеют отношения один ко многим. Мой запрос заключается в том, что прямо сейчас через SqlResultSetMapping я могу получить результаты первого класса, который является Com, но внутри Com есть ссылка на SubCom, но в результате мой текущий SqlResultSetMapping вывод, который я получаю, является идеальным, но он содержит нуль для SubCom, поэтому, пожалуйста, посоветуйте, как мне изменить мой SqlResultSetMapping, чтобы я также получал значение SubCom, я должен разработать отдельный SqlResultSetMapping для SubCom.
Первое Pojo показано ниже
@SqlResultSetMapping(
name = "firstQuery",
classes = @ConstructorResult(
targetClass = com.entity.Com.class,
columns = {
@ColumnResult(name = "com_Id" , type = Integer.class),
@ColumnResult(name = "Cescription" , type = String.class),
@ColumnResult(name = "name" , type = String.class)}))
@Entity
@Data
@Table(name = "COM")
public class Com implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "com_Id")
private Integer ComId;
private String Cescription;
private String name;
@OneToMany(mappedBy = "Com", cascade = CascadeType.ALL)
@ToString.Exclude
private List<SubCom> subCom = new ArrayList<>(); // *** Has a refrence
//**** Constructor
public Com( Integer ComId , String Cescription, String name) {
this.ComId=ComId;
this.Cescription = Cescription;
this.name = name;
}
}
Мое второе pojo -
@Entity
@Table(name = "sub_com")
@Data
public class SubCom implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "sub_com_id")
private Integer Id;
private String name;
private String Cescription;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumn(name = "com_Id")
private Com com; //****** Refernce to above table.
}
Я выполнил собственный SQL-запрос, который выглядит следующим образом
SELECT
c.com_Id,
c.Cescription,
sc.sub_domain_id
FROM Com AS c
INNER JOIN SubCom AS sc ON c.com_Id = sc.com_Id