jpa⾃定义字段
⾃定义返回的字段,不知道为啥select new 总是报错,⽆论是select new Map 还是select new 实体,所以先暂时⽤下边这个不规范的⽅法,等我出原因了会更新
⾃定义实体,继上边那个问题后发现⾃定义实体的话可以实现,⾸先要加@Entity注解和@Id注解
实体,省略setter和getter
sql:
这⾥⽤了⼀个⼯具类,封装的就是entitymanager的⽅法:
测试:
解决办法⼆:不知道百度上那些select new是怎么操作的,反正作结果集总是不对,但是还是到了另⼀种解决⽅法:jpa mybatis
在dao层中的代码,这⾥的query注解执⾏sql代码返回的是⼀个list,也就是这个:List<Object[]> list =
⾥边的元素是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>>的数据:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论