我正在尝试使用@Query
spring数据jpa 的注释在mysql数据库上执行自定义查询。
该表是
+------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| id | decimal(10,0) | NO | PRI | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(20) | YES | | NULL | |
+------------+---------------+------+-----+---------+-------+
和MySQL中的查询是
select last_name,count(last_name) as count from person group by last_name;
在Spring数据jpa中实现此功能时。我正在使用这种逻辑,
CountPerson
包含两个变量的类,last_name
并count
CountPerson
类的对象列表。像spring数据jpa中的查询是
@Query("select p.lastName,count(p.lastName) as count from Person p group by p.lastName")
当代码编译且Web服务器正常启动时,当我尝试运行相关方法时,我得到
There was an unexpected error (type=Internal Server Error, status=500).
No aliases found in result tuple! Make sure your query defines aliases!; nested exception is java.lang.IllegalStateException: No aliases found in result tuple! Make sure your query defines aliases!
搜索此错误将显示spring数据jpa:在结果元组中找不到别名!确保您的查询定义了别名),该别名表示这是一个固定的错误。所以我想我的问题不一样
代码是
人类
//imports
@Entity
@Table(name = "person")
public class Person{
@Id
Long id;
String firstName;
String lastName;
private Person(){}
//constructor
}
人员库类
//imports
@Transactional
public interface PersonRepository extends CrudRepository<Person,Long>{
@Query("select p.lastName,count(p.lastName) as count from Person p group by p.lastName")
public List<CountPerson> countbylastname();
}
控制器类
@Controller
public class PersonController{
@Autowired
PersonRepository repository;
@RequestMapping("/count")
@ResponseBody
public List<CountPerson> countbylastname(){
return repository.countbylastname();
}
}
伯爵班
public class CountPerson{
String lastName;
int count;
protected CountPerson(){}
public CountPerson(String lastName,int count){
this.lastName = lastName;
this.count = count;
}
}
快到了…(顺便说一句,所以我希望它是完美的)您需要创建一个新的CountPerson(…)
select new com.mypackage.CountPerson(p.last_name, count(p.last_name)) from person p ...
JpaRepository只能轻松返回Person对象,但是您可以自己在HQL中创建对象。
我试图使用spring data JPA的注释在mysql数据库上执行一个自定义查询。 null 当代码编译并且web服务器启动良好时,当我尝试运行相关方法时,我得到 搜索这个错误显示spring数据JPA:在结果元组中找不到别名!确保您的查询定义了别名,这说明它是一个已修复的错误。所以我想我的问题是不同的 这些代码是
我得到了和这个问题一样的错误。但是,我知道这个问题(实际上是3个单独的问题)已经解决了。我使用的是sd-jpa1.11.1.release和sd-commons1.31.1.release。 以下是我的代码摘要:
下面从JPA查询获取Spring数据投影的方法对我不适用: https://stackoverflow.com/A/45443776/1005607
使用Spring Boot应用程序。我有一个类UserService,我在其中创建了一个动态查询,根据请求参数具有多个or条件: 我有UserRepository接口,我需要执行这个查询。到目前为止,我使用了findById等JPA函数或@Query(“从事件中选择id”)。 如何将此查询从服务类传递到存储库并执行它?
下面从JPA查询中获取Spring数据投影的方法对我不起作用: https://stackoverflow.com/a/45443776/1005607 Spring数据投影模型界面: 一切都和那个公认的答案一样。但是得到这个错误: 我不想在查询中使用,它很脏,依赖于我们将其抽象为JPA的Hibernate。