如何解决 java.math.BigInteger 无法转换为 java.lang.Integer 的问题?
How to work around java.math.BigInteger cannot be cast to java.lang.Integer?
我的Spring-boot有问题,我的请求库是这样写的:
package com.ftm.webappli.repository.population;
import java.util.List;
import com.ftm.webappli.model.population.All;
import com.ftm.webappli.model.population.MenWomen;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface AllRepository extends JpaRepository<All, Long> {
@Query(
value = "SELECT SUM(p15_pop) AS total_population, SUM(p15_poph) AS total_hommes, SUM(p15_popf) AS total_femmes FROM public.iris_pop_2015 WHERE com = :code",
nativeQuery = true)
List<MenWomen> sumPopulationHommeFemme(String code);
}
她 return 3 BigInt on PostgreSQL。
在我写的方法中:
package com.ftm.webappli.model.population;
import java.io.Serializable;
import java.math.BigInteger;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
@Entity
@FieldDefaults(level = AccessLevel.PRIVATE)
@Getter
@NoArgsConstructor
@Setter
@Table(schema = "public", name = "iris_pop_2015")
public class MenWomen implements Serializable {
@Id
@Column(name = "total_population")
private BigInteger nbTotal;
@Column(name = "total_hommes")
private BigInteger nbMen;
@Column(name = "total_femmes")
private BigInteger nbWomen;
}
但是我有一个错误:
无法将值“{5766, 2767, 2999}”的类型 [java.lang.Object[]] 转换为类型 [com.ftm.webappli.model.population.MenWomen];嵌套异常是 org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型
转换的转换器
我已尝试更正我的请求:
"SELECT SUM(p15_pop)::integer AS total_population, SUM(p15_poph)::integer AS total_hommes, SUM(p15_popf)::integer AS total_femmes FROM public.iris_pop_2015 WHERE com = :code"
模型为整数,例如:
@Column(name = "total_hommes")
private Integer nbMen;
但不起作用...该请求在 PostgreSQL 上有效,但在 Spring 上无效
我也尝试纠正我的 java.lang:
@Repository
public interface AllRepository extends JpaRepository<All, Integer>
或
@Repository
public interface AllRepository extends JpaRepository<All, Long>
或
@Repository
public interface AllRepository extends JpaRepository<All, BigInteger>
但是行不通...你有想法吗?
请将 All
替换为实体名称,即 MenWomen
如下所示,
@Repository
public interface AllRepository extends JpaRepository<MenWomen, Integer>
我的Spring-boot有问题,我的请求库是这样写的:
package com.ftm.webappli.repository.population;
import java.util.List;
import com.ftm.webappli.model.population.All;
import com.ftm.webappli.model.population.MenWomen;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface AllRepository extends JpaRepository<All, Long> {
@Query(
value = "SELECT SUM(p15_pop) AS total_population, SUM(p15_poph) AS total_hommes, SUM(p15_popf) AS total_femmes FROM public.iris_pop_2015 WHERE com = :code",
nativeQuery = true)
List<MenWomen> sumPopulationHommeFemme(String code);
}
她 return 3 BigInt on PostgreSQL。
在我写的方法中:
package com.ftm.webappli.model.population;
import java.io.Serializable;
import java.math.BigInteger;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
@Entity
@FieldDefaults(level = AccessLevel.PRIVATE)
@Getter
@NoArgsConstructor
@Setter
@Table(schema = "public", name = "iris_pop_2015")
public class MenWomen implements Serializable {
@Id
@Column(name = "total_population")
private BigInteger nbTotal;
@Column(name = "total_hommes")
private BigInteger nbMen;
@Column(name = "total_femmes")
private BigInteger nbWomen;
}
但是我有一个错误:
无法将值“{5766, 2767, 2999}”的类型 [java.lang.Object[]] 转换为类型 [com.ftm.webappli.model.population.MenWomen];嵌套异常是 org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型
转换的转换器我已尝试更正我的请求:
"SELECT SUM(p15_pop)::integer AS total_population, SUM(p15_poph)::integer AS total_hommes, SUM(p15_popf)::integer AS total_femmes FROM public.iris_pop_2015 WHERE com = :code"
模型为整数,例如:
@Column(name = "total_hommes")
private Integer nbMen;
但不起作用...该请求在 PostgreSQL 上有效,但在 Spring 上无效
我也尝试纠正我的 java.lang:
@Repository
public interface AllRepository extends JpaRepository<All, Integer>
或
@Repository
public interface AllRepository extends JpaRepository<All, Long>
或
@Repository
public interface AllRepository extends JpaRepository<All, BigInteger>
但是行不通...你有想法吗?
请将 All
替换为实体名称,即 MenWomen
如下所示,
@Repository
public interface AllRepository extends JpaRepository<MenWomen, Integer>