У меня есть две сущности в моем приложении Spring-Boot, которые находятся во многих отношениях.У меня проблема с получением tipoviPlacanja (список объектов TipPlacanja) из определенных Casopis .
Casopis.java
@Entity
public class Casopis {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
@Column
private String merchantId;
@Column
private String merchantPassword;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "casopis")
public Racun racun;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "casopis_tipovi_placanja",
joinColumns = { @JoinColumn(name = "merchant_id") },
inverseJoinColumns = { @JoinColumn(name = "tip_placanja_id") }
)
Set<TipPlacanja> tipoviPlacanja = new HashSet<>();
public Casopis() {
super();
// TODO Auto-generated constructor stub
}
public Casopis(String merchantId, String merchantPassword, Racun racun, Set<TipPlacanja> tipoviPlacanja) {
super();
this.merchantId = merchantId;
this.merchantPassword = merchantPassword;
this.racun = racun;
this.tipoviPlacanja = tipoviPlacanja;
}
public Set<TipPlacanja> getTipoviPlacanja() {
return tipoviPlacanja;
}
public void setTipoviPlacanja(Set<TipPlacanja> tipoviPlacanja) {
this.tipoviPlacanja = tipoviPlacanja;
}
}
и
TipoviPlacanja.java
@Entity
public class TipPlacanja {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String naziv;
@ManyToMany(mappedBy = "tipoviPlacanja")
private Set<Casopis> casopisi = new HashSet<>();
public TipPlacanja() {
}
public TipPlacanja(Long id, String naziv) {
super();
this.id = id;
this.naziv = naziv;
}
}
My data.sql выглядит так:
insert into tip_placanja(id, naziv) values (1, 'paypal');
insert into tip_placanja(id, naziv) values (2, 'kartica');
insert into tip_placanja(id, naziv) values (3, 'bitcoin');
insert into casopis(merchant_id, merchant_password) values ('22', 'bbbb');
insert into casopis(merchant_id, merchant_password) values ('11', 'aaaa');
insert into casopis_tipovi_placanja(merchant_id, tip_placanja_id) values ('11', 1);
insert into casopis_tipovi_placanja(merchant_id, tip_placanja_id) values ('11', 2);
insert into casopis_tipovi_placanja(merchant_id, tip_placanja_id) values ('11', 3);
insert into casopis_tipovi_placanja(merchant_id, tip_placanja_id) values ('22', 1);
insert into casopis_tipovi_placanja(merchant_id, tip_placanja_id) values ('22', 2);
Iмогу поклясться, что он работал только с
casopisRepository.findByMerchantId(id).getTipoviPlacanja();
, но теперь возвращает только список emtpy.
Я прочитал много других похожих вопросов и прочитал некоторые учебные статьи о многихto-many, но ничего.
Я пытался с запросом в хранилище TipPlacanja, но тоже ничего.
@Query("SELECT tp FROM TipPlacanja tp JOIN tp.casopisi c WHERE c.merchantId = ?1")
public Set<TipPlacanja> findBlaBla(String id);
Я пытался с вводом запроса непосредственно в MySQL Workbench, и он работает нормально, он возвращаетидентификаторы всех типовиПлакания от конкретных Casopis .
select tp.id from tip_placanja tp
inner join casopis_tipovi_placanja ctp on tp.id = ctp.tip_placanja_id
inner join casopis c on ctp.merchant_id = c.merchant_id
where c.merchant_id = '22';