• springboot jpa---->总结一下遇到的问题


    Native Query throw exception

    • dto code
    import lombok.Value;
    
    @Value
    public class IdsOnly {
    
        Integer id;
        String otherId;
    }
    
    • repository
    public interface TestTableRepository extends JpaRepository<TestTable, Integer> {
    
        @Query(value = "select id, otherId from TestTable where CreationDate > ?1", nativeQuery = true)
        public Collection<IdsOnly> findEntriesAfterDate(Date creationDate);
    }
    
    • service
    List<IdsOnly> results = ttRepo.findEntriesAfterDate(theDate);  
    
    • exception
    org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.example.IdsOnly]
    

    解决方法有两种

    • 使用NativeQuery:将IdsOnly更换成接口,提供属性的get方法。
    public interface IdsOnly {
        Integer getId();
        String getOtherId();
    }
    
    • 不使用NativeQuery
    @Query("select new com.example.IdsOnly(t.id, t.otherId) from TestTable t where t.creationDate > ?1")
    

    Jpa中没有update方法

    jpa中只有save方法,如果你传递的对象的主键在数据库中存在,那么就是更新操作。否则就是插入操作。

    Delete operation

    JpaRepository Not supported for DML operations [delete query]
    
    • Repository: add @Modifying
    @Modifying
    void deleteByUserIdAndToolId(Integer userId, Integer toolId);
    
    • Service: add @Transactional
    @Transactional
    public void doDeleteUserTool(Integer userId, Integer toolId) {
        userToolMapper.deleteByUserIdAndToolId(userId, toolId);
    }
    

    To be continue

    Industry is the soul of business and the keystone of prosperity.
    

  • 相关阅读:
    「Codeforces 724F」Uniformly Branched Trees
    「笔记」组合入门题选做
    「算法笔记」组合入门与应用
    「算法笔记」可持久化线段树
    「算法笔记」期望 DP 入门
    「NOIP 2016」换教室
    「算法笔记」基础数论
    「笔记」关于乱搞
    python 的列表遍历删除
    Python基础第三篇:函数
  • 原文地址:https://www.cnblogs.com/huhx/p/13228766.html
Copyright © 2020-2023  润新知