Jpa 或实体管理器处理参数列表:List<Long>
Jpa or entity manager deal with list of parameter : List<Long>
我试过了:
@Query("Select m.id from Cars m where m.id not in :x")
List<Long> findNotChoosenCars(@Param("x") List<Long> CarsId);
我得到:
org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « ) »
Translation: syntax error near << ) >>
我也试过将 :x 放在方括号中,例如 : (:x)
我也试过了
@Query(value = "Select id from Cars where id not in (?1)",nativeQuery = true)
List<Long> findNotChoosenCars(List<Long> CarsId);
还有:
private EntityManagerFactory emf;
private List<Long> getNotSelectedCarsIds(List<Long> selectedIds){
List<String>strings=selectedIds.stream().map(Object::toString).collect(Collectors.toList());
final String notSelectedCarIdsSql= "Select id from Car where id not in (:strings)";
return emf.createEntityManager().createNativeQuery(notSelectedMarkerIdsSql)
.setParameter("strings",strings)
.getResultList();
}
我仍然有相同的堆栈跟踪。我正在使用 postgres 9.4
有什么帮助吗?
当字符串列表为空时,它似乎失败了。
尝试在查询调用之前添加检查。
if (strings == null || strings.size() == 0) {
return new ArrayList();
}
我试过了:
@Query("Select m.id from Cars m where m.id not in :x")
List<Long> findNotChoosenCars(@Param("x") List<Long> CarsId);
我得到:
org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « ) »
Translation: syntax error near << ) >>
我也试过将 :x 放在方括号中,例如 : (:x)
我也试过了
@Query(value = "Select id from Cars where id not in (?1)",nativeQuery = true)
List<Long> findNotChoosenCars(List<Long> CarsId);
还有:
private EntityManagerFactory emf;
private List<Long> getNotSelectedCarsIds(List<Long> selectedIds){
List<String>strings=selectedIds.stream().map(Object::toString).collect(Collectors.toList());
final String notSelectedCarIdsSql= "Select id from Car where id not in (:strings)";
return emf.createEntityManager().createNativeQuery(notSelectedMarkerIdsSql)
.setParameter("strings",strings)
.getResultList();
}
我仍然有相同的堆栈跟踪。我正在使用 postgres 9.4 有什么帮助吗?
当字符串列表为空时,它似乎失败了。
尝试在查询调用之前添加检查。
if (strings == null || strings.size() == 0) {
return new ArrayList();
}