我有以下实体:该名称,没有定义查询使用实体管理器时
package com.server.models;
@Entity
@Table(name="users")
@NamedQueries({
@NamedQuery(name=User.QUERY_FIND_USER,query="SELECT c FROM user c WHERE c.username = :username")
})
public class User {
public static final String QUERY_FIND_USER = "LoginFindUser";
// ...
}
,然后使用该实体管理器(EM)我做了以下内容:
package com.server.controllers;
@Service
@Transactional
@RestController
@RequestMapping("/user")
public class LoginController {
@PersistenceContext
private EntityManager em;
// my code
TypedQuery<User> queries = em.createNamedQuery(User.QUERY_FIND_USER,User.class).setParameter("username", username);
List<User> users = queries.getResultList();
}
但我收到以下错误:
java.lang.IllegalArgumentException: No query defined for that name [LoginFindUser]
这是我的弹簧引导配置。这应该包括对实体的扫描。
package com.server.boot;
@Configuration
@ComponentScan({"com.server"})
@EnableAutoConfiguration
public class Starter {
public static void main(String[] args){
SpringApplication.run(Starter.class,args);
System.out.println("started application");
}
@Bean
public LoginController loginController(){
return new LoginController();
}
@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
factory.setEntityManagerFactory(emf);
return factory;
}
}
当你把一个简单的字符串作为名字时它是否工作?如果是的话,这可能是一些评估时间差 – 2014-11-25 11:00:12
不是没有。 – mangusbrother 2014-11-25 11:10:12
然后检查是否在您的持久性单元中定义了User实体。 – 2014-11-25 11:11:24