FooBar is not mapped
即使我已经放置了所有必要的注释,我也遇到了异常:
模型类中的Entity注解:
模型/FooBar.java*
@Data
@Entity
@Table(name = "ORDERS")
public class FooBar {}
DAO 中的 Repository、PersistenceContext 和 Transactioinal。另外,我通过类名“FooBar”正确地引用了它
db/FooBarDao.java
@Repository
public class OrderDAO {
@PersistenceContext
private EntityManager em;
@Transactional
public List<FooBar> getFooBars() {
return em.createQuery(
"select fb from FooBar fb",
FooBar.class
).getResultList();
}
}
这是使其全部工作的配置:
配置文件/DbConfig.java
@EnableTransactionManagement
@Configuration
@ComponentScan(basePackages = {"project.db"})
public class DbConfig {
@Autowired
public Environment env;
@Bean
public DataSource dataSource() {
System.out.println("Configuring database!!!!!!!!");
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("org.hsqldb.jdbcDriver");
ds.setUrl("jdbc:hsqldb:mem:myjdbc");
new JdbcTemplate(ds)
.update(FileUtil.readFile2("./src/main/java/project/db/sql/initialize.sql"));
return ds;
}
@Bean
public PlatformTransactionManager transactionManager(
EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
@Bean
public EntityManagerFactory entityManagerFactory() {
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setPersistenceProviderClass(HibernatePersistenceProvider.class);
factory.setPackagesToScan("model");
factory.setDataSource(dataSource());
factory.setJpaProperties(additionalProperties());
factory.afterPropertiesSet();
return factory.getObject();
}
private Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "validate");
properties.setProperty("hibernate.dialect",
"org.hibernate.dialect.HSQLDialect");
properties.setProperty("hibernate.show_sql", "true");
properties.setProperty("hibernate.format_sql", "true");
return properties;
}
}
即使我正确设置了注释并正确引用了类,它也没有找到映射。所以问题很可能与扫描模型类有关。
我的项目结构是/src/main/java/project/
...
因此,扫描model
:
factory.setPackagesToScan("model");
不会找到任何豆子。相反,我需要做
factory.setPackagesToScan("project.model");
这解决了问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句