• jpa自定义字段


    自定义返回的字段,不知道为啥select new 总是报错,无论是select new Map 还是select new 实体,所以先暂时用下边这个不规范的方法,等我找出原因了会更新

     自定义实体,继上边那个问题后发现自定义实体的话可以实现,首先要加@Entity注解和@Id注解

    实体,省略setter和getter

     sql:

     这里用了一个工具类,封装的就是entitymanager的方法:

     测试:

     解决办法二:不知道百度上那些select new是怎么操作的,反正我操作结果集总是不对,但是还是找到了另一种解决方法:

    在dao层中的代码,这里的query注解执行sql代码返回的是一个list,也就是这个:List<Object[]> list  = entityManager.createNativeQuery(sql).getResultList();

    里边的元素是object[]数组,这里相当于强转一下由Object[]转化为Map<String,Object>

     建议的话还是用对象来接受,因为对象接收的话就相当于mybatis的resultMap,如果元素为空的话是会显示的,但是用map接受的话空元素就不会显示。

    测试:

     解决办法三:终于找到了select new 的办法:

    首先还是建自定义实体类Test,注意参数类型必须和原类的参数类型相同,且构造方法内的参数顺序和查询的顺序一致,相应的注解也要加:

     然后在responsitory中,new Test内的参数与构造方法中的顺序一致,这是hql的写法所以nativeQuery=true这个启用sql语句的参数就不需要了,赋值的话在这里用:id,@Param这个注解也不能少,from表的时候要找对应的实体类而不是数据库中的表名。

    解决办法四:不用另外创建实体类,返回List<Map<String,Object>>的数据:

    我不是程序员,我只是程序的搬运工
  • 相关阅读:
    java 数组
    数组(二)
    JVM内存分配策略
    JVM垃圾收集算法
    LINUX 查看硬件配置命令
    遗传算法
    svn简单使用
    Several concepts in Data Mining
    JVM判断对象存活的算法
    JVM运行时数据区
  • 原文地址:https://www.cnblogs.com/keith0/p/13209594.html
Copyright © 2020-2023  润新知