存储函数错误:找不到能够从类型转换的转换器
Posted
技术标签:
【中文标题】存储函数错误:找不到能够从类型转换的转换器【英文标题】:Stored Function Error: No converter found capable of converting from type 【发布时间】:2019-04-03 11:55:09 【问题描述】:我在 PostgreSQL 中创建了存储函数。我在 PostgreSQL 中得到了正确的结果。但是当我尝试使用本机查询调用 spring data jpa 中的存储函数时。我收到以下错误。
No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.spacestudy.model.ClientRT]"
存储库
@Repository
public interface ClientRoomTypeRepository extends JpaRepository<ClientRoomType, Integer>
@Query(nativeQuery = true,value = "select * from roomtype(:int_inst_id)")
List<ClientRT> roomtype(@Param("int_inst_id")Integer int_inst_id);
结果类 ClientRT
public class ClientRT
public Integer res_nclient_room_type_id;
public String res_sclient_rt_desc;
public String res_sclient_rt_name;
public String res_sclient_rt_code;
//getter and setter
...
PostgrSQL 结果
【问题讨论】:
ClientRT 是一个实体吗? 不,这不是一个实体。我创造的只是为了回报 那么jpa如何将结果映射到那个POJO呢? 表示返回类需要作为一个实体。但我在 db 中没有那个表,那么有没有其他方法可以返回它 那么你必须实现自己的逻辑来从对象中获取数据并将其设置为 POJO。 【参考方案1】:您可以使用我在项目中使用过的类似逻辑,该逻辑可能对您有用,也可能不适用。我没有将它与 JPA 对象映射一起使用。
public class ObjectSerializer
private static ObjectMapper objectMapper;
@Autowired
public ObjectSerializer(ObjectMapper objectMapper)
ObjectSerializer.objectMapper = objectMapper;
public static <T> T getObject(Object obj, Class<T> class1)
String jsonObj = "";
T userDto = null;
try
jsonObj = objectMapper.writeValueAsString(obj);
userDto = (T) objectMapper.readValue(jsonObj, class1);
System.out.println(jsonObj);
catch (JsonProcessingException jpe)
catch (IOException e)
e.printStackTrace();
return userDto;
希望这会有所帮助。
【讨论】:
我将存储库方法的返回类型更改为List<object>
。我得到了结果,但不是 json 格式 [[ 1, "TEMPORARILY NOT ASSIGNED", "TEMPORARILY NOT ASSIGNED", "000" ],
使用此方法并将对象与要转换的 pojo 一起传递给它。希望这会有所帮助。
这个 crt 是 sp 的结果:List<Object> crt=crtRepo.roomtype(60);
我应该在 obj 的地方通过 crt
是的,你应该在 object 的地方传递 object 和任何类来设置数据到那个地方,在 class 的地方。
点赞public static <T> T getObject(Object crt, ClientRT class1)
以上是关于存储函数错误:找不到能够从类型转换的转换器的主要内容,如果未能解决你的问题,请参考以下文章
使用 GORM 获取 Mongo 集合时,找不到能够从 java.lang.Double 类型转换为 java.lang.Long 类型的转换器
Spring Boot Jpa 1.4.0 - 找不到能够从类型 [java.util.HashMap<?, ?>] 转换为 Pojo 类型的转换器
错误C2678:二进制'+':找不到运算符,它接受类型为'volatile A'的左手操作数(或者没有可接受的转换)