我有以下实体:
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]
这是我的spring-boot配置。这应该包括扫描实体。
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;
}
}
答案 0 :(得分:13)
找到它。感谢评论中的人
添加
@EntityScan("com.server.models")
到您的配置类
我在查询中遇到错误user
需要User
答案 1 :(得分:6)
好的,这可能是您持久性配置的问题。如果您的模型定义都在一个单独的ejb中,请确保将它们添加到persistence-unit中的persistence.xml中
答案 2 :(得分:0)
您可以使用下面显示的此代码段。
<property name="packagesToScan" value="com.servers.model" />
答案 3 :(得分:0)
添加
entitymanager.packagesToScan:com.server.models
到您的application.properties文件。
答案 4 :(得分:0)
您可以通过以下配置进行操作。
Rec1..3..A1B1C1A2B2C2A3B3C3
Rec2..2..A1B1C1A2B2C2