0
안녕하세요, JPA hibernate SQL 쿼리에 문제가 있습니다. 여기서는 하나의 기본 속성에서 요소를 검색하고 목록의 기본 엔터티에있는 요소를 검색합니다. 그래서 배열 문자열, 멀티 코어 검색을 사용 beacause와 비교해야합니다.JPA hibernate SQL 쿼리
@Entity
public class Dejavnosti implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_dejavnosti")
private int idDejavnosti;
private String naziv;
//bi-directional many-to-one association to Lokacija
@ManyToOne
private Lokacija lokacija;
//bi-directional many-to-many association to Produkti
@ManyToMany
@JoinTable(
name="dejavnosti_produkti"
, joinColumns={
@JoinColumn(name="dejavnosti_id_dejavnosti")
}
, inverseJoinColumns={
@JoinColumn(name="produkti_id_produkti")
}
)
private List<Produkti> produktis;
둘째 : 내 JPA 하나입니다
@Entity
public class Produkti implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_produkti")
private int idProdukti;
private String naziv;
//bi-directional many-to-many association to Dejavnosti
@ManyToMany(mappedBy="produktis")
private List<Dejavnosti> dejavnostis;
이 2와 비교하기 입력 목록 searchwords 하나 Dejavnosti.naziv 및 초 Dejavnosti.produktis 인 속성을 가지고 EJB 내 방법입니다 .naziv :
public List<Dejavnosti> Isci(List<String> selectedTexts){
String klic="SELECT c FROM Dejavnosti c INNER JOIN c.produktis dp WHERE " ;
for(int i=0;i<selectedTexts.size();i++){
klic=klic+"c.naziv LIKE '%" +selectedTexts.get(i) + "%' OR ";
klic=klic+"dp.naziv LIKE '%" +selectedTexts.get(i) + "%' ";
//zadnjič ne doda OR
if(!(i+1==selectedTexts.size())){
klic=klic+" OR ";
}
}
List<Dejavnosti> dejavnosti=em.createQuery(klic,Dejavnosti.class).getResultList();
return dejavnosti;
}
오류가 없지만 SQL이 작동하지 않으면 beacuse가 0 요소를 반환하지만 elemenets는 있습니다! 나는 그 방법에 나쁜 코드를 알고 있지만 이것은 내 생각이다 :) 도움을 주셔서 감사하고 내 지식을 향상시킬 수 있습니다.