JPA 映射:“QuerySyntaxException:FooBar 未映射……”

我得到了FooBar is not mapped例外,即使我已经放置了所有必要的注释:


模型类中的实体注解:


模型/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();

    }

}

这是使其全部正常工作的配置:


conf/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();

    

    }


}


芜湖不芜
浏览 113回答 1
1回答

隔江千里

即使我正确设置了注释并正确引用了类,它也没有找到映射。所以问题很可能是扫描模型类。我的项目结构是/src/main/java/project/...所以,扫描model:factory.setPackagesToScan("model");找不到任何豆子。相反,我需要做factory.setPackagesToScan("project.model");这解决了这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java