我想得到kotizacija_id等于指定ID的所有行。这是我在Controller中的功能
@GetMapping("/kotizacije_cjenovnik/{id}")
@Timed
public List<KotizacijeCjenovnik> getKotizacijeByKotizacijaId(@PathVariable BigInteger id) {
log.debug("REST request to get Kotizacija : {}", id);
List<KotizacijeCjenovnik> kotizacija_cjenovnik = kotizacijaCjenovnik.getKotizacijeByKotizacijaId(id);
return kotizacija_cjenovnik;
}
这是我的KotizacijeCjenovnik存储库
@SuppressWarnings("unused")
@Repository
public interface KotizacijeCjenovnikRepository extends
JpaRepository<KotizacijeCjenovnik, BigInteger> {
@Query(value="select kotizacije_cjenovnik from KotizacijeCjenovnik kotizacije_cjenovnik where kotizacije_cjenovnik.kotizacija.id =:id")
List<KotizacijeCjenovnik> getKotizacijeByKotizacijaId(@Param("id") BigInteger id);
}
这里的模特KotizacijeCjenovnik
@Entity
@Table(name = "kotizacije_cjenovnik")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class KotizacijeCjenovnik implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "cijena1", nullable = false)
private Double cijena1;
@ManyToOne
private Kotizacija kotizacija;
// jhipster-needle-entity-add-field - JHipster will add fields here, do not remove
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
private Double getCijena1() {
return cijena1;
}
public KotizacijeCjenovnik cijena1(Double cijena) {
this.cijena1 = cijena;
return this;
}
public void setCijena1(Double cijena) {
this.cijena1 = cijena;
}
public Kotizacija getKotizacija() {
return kotizacija;
}
public KotizacijeCjenovnik kotizacija(Kotizacija kotizacija) {
this.kotizacija = kotizacija;
return this;
}
public void setKotizacija(Kotizacija kotizacija) {
this.kotizacija = kotizacija;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
KotizacijeCjenovnik kotizacijeCjenovnik = (KotizacijeCjenovnik) o;
if (kotizacijeCjenovnik.getId() == null || getId() == null) {
return false;
}
return Objects.equals(getId(), kotizacijeCjenovnik.getId());
}
@Override
public int hashCode() {
return Objects.hashCode(getId());
}
@Override
public String toString() {
return "KotizacijeCjenovnik{" +
"id=" + getId() +
", cijena1=" + getCijena1() +
", cijena2=" + getCijena2() +
", cijena3=" + getCijena3() +
"}";
}
}
但是当我调用函数getKotizacijeByKotizacijaId时,我收到错误:
参数值[1]与预期类型[java.lang.Long(n / a)]不匹配;嵌套异常是java.lang.IllegalArgumentException:参数值[1]与期望类型[java.lang.Long(n / a)]
不匹配
我的问题是如何选择外键等于指定值的行。
答案 0 :(得分:2)
您已将自己的ID指定为Long
KotizacijeCjenovnik
个实体,但是您将查询传递给BigInteger
将其从BigInteger
更改为Long
@Query(value="select kotizacije_cjenovnik from KotizacijeCjenovnik kotizacije_cjenovnik where kotizacije_cjenovnik.kotizacija.id =:id")
List<KotizacijeCjenovnik> getKotizacijeByKotizacijaId(@Param("id") Long id);
答案 1 :(得分:2)
在Entity
中,您说id
属于Long类型。在你的repository
中,你说它是一个BigInteger。您应该在存储库中使用Long
。对于方法,它应该是
List<...> findAllByKotizacijeId(Long id);
使用JPA时,您不必编写查询
答案 2 :(得分:1)
错误消息显示您使用了错误的类型。它预计很长,但你传入了一个BigInteger。尝试:
List<KotizacijeCjenovnik> kotizacija_cjenovnik = kotizacijaCjenovnik.getKotizacijeByKotizacijaId(id.longValue());
答案 3 :(得分:1)
似乎 Kotizacija 的ID 长而不是 BigInteger ,但您可以指定 Kotizacija < / strong>直接代替 id 。 控制器:
@GetMapping("/kotizacije_cjenovnik/{id}")
@Timed
public List<KotizacijeCjenovnik> getKotizacijeByKotizacijaId(@PathVariable BigInteger id) {
log.debug("REST request to get Kotizacija : {}", id);
Kotizacija kotizacija = new Kotizacija();
kotizacija.setId(id);
List<KotizacijeCjenovnik> kotizacija_cjenovnik = kotizacijaCjenovnik.getKotizacijeByKotizacija(kotizacija);
return kotizacija_cjenovnik;
}
存储库:
@SuppressWarnings("unused")
@Repository
public interface KotizacijeCjenovnikRepository extends
JpaRepository<KotizacijeCjenovnik, BigInteger> {
@Query(value="select kotizacije_cjenovnik from KotizacijeCjenovnik kotizacije_cjenovnik where kotizacije_cjenovnik.kotizacija = :kotizacija")
List<KotizacijeCjenovnik> getKotizacijeByKotizacija(@Param("kotizacija") Kotizacija kotizacija);
}