所以我试图通过hibernate和jpa使用自定义查询
@Transactional public interface EstimateOptionsDao extends JpaRepository<EstimateOptions, Integer> { @Query("from estimateOptions options inner join options.company company inner join company.user user where user.name = :userName\n") EstimateOptions EstimateOptions(String userName); }
但是,这EstimateOptions给了我以下错误:
EstimateOptions
Can't resolve symbol 'EstimateOptions' less... (Ctrl+F1) This inspection controls whether the Persistence QL Queries are error-checked
所以我发现了这篇文章为什么Hibernate查询在IntelliJ中有编译错误?。
所以我添加了一个方面来测试:
现在我有这样的hibernate.cfg.xml:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.url"/> <property name="connection.driver_class"/> <property name="connection.username"/> <property name="connection.password"/> <!-- DB schema will be updated if needed --> <!-- <property name="hbm2ddl.auto">update</property> --> </session-factory> </hibernate-configuration>
和弹簧配置是这样的:
spring.datasource.url=jdbc:mysql://localhost:3306/testdb spring.datasource.username=root spring.datasource.password=root spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
但是,如果我使用intellij的Persistence Tool进行了如下简单查询:
hql>来自用户
它产生以下错误:
[2015-12-09 12:59:27] org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [] [2015-12-09 12:59:27] java.lang.ClassNotFoundException: .....
如您所见,我有点迷路…这些设置有什么问题?
Project structure
Facets
Add
JPA
Modules
然后,应针对您的实体验证您的JPA查询。