2015-12-02 50 views
1

我对Hibernate,所以有可能会出现很多问题,但我已经显示Account实体这里:Hibernate查询返回一个空的结果列表

@Entity 
@Table(name = "TABLE_NAME") 
public class Account { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "ID") 
    private int id; 

    @Column(name = "EMAIL", unique = true) 
    private String email; 

    @Column(name = "PASSWORD", length = 128) 
    private String password; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 
} 

,我试图在选择数据库中的所有帐户以下功能:

public List<Account> getAllAccounts() { 
    Query q = em.createQuery("select a from Account a"); 
    return q.getResultList(); 
} 

的问题是,它返回一个空的列表,而是运行在Oracle SQL Developer中编辑的结果SQL(由<entry key="hibernate.show_sql" value="true" />控制台中显示)时,我得到返回结果。

我在做什么错?

编辑:

我想创建一个春天的Web应用程序,所以我连接的休眠在这里的春天配置:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx.xsd"> 

    <context:component-scan base-package="com.checkpoint.core.repositories.jpa" /> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="url" value="jdbc:oracle:thin:@[[url]]:[[port]]:[[sid]]" /> 
     <property name="username" value="username" /> 
     <property name="password" value="password" /> 
    </bean> 

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
     </property> 
     <property name="jpaProperties"> 
      <map> 
       <entry key="hibernate.hbm2ddl.auto" value="validate" /> 
       <entry key="hibernate.show_sql" value="true" /> 
       <entry key="hibernate.format_sql" value="true" /> 
       <entry key="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
      </map> 
     </property> 
     <property name="packagesToScan" value="com.checkpoint.core.models.entities" /> 
    </bean> 

    <!-- Setup transaction management --> 
    <tx:annotation-driven /> 

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" /> 

    <context:component-scan base-package="com.checkpoint.core.services.impl" /> 

</beans> 
+0

CHAGE您的查询“从账户中选择一个”到“从账户” –

+0

@sumantipparapu这不会帮助 - 他使用JPA实体管理'JPQL' - 不是Hibernate的具体'HQL' –

+0

@Algosub如何你评估该清单是空的吗? SQL的外观如何?你是否检查过你没有使用Hibernate的其他数据库?你用'create'使用'hibernate.hbm2ddl.auto'吗?根据您提供的信息很难确定问题出在哪里。 –

回答

0

发现问题, 我用错了ojdbc驱动程序,不支持我的确切oracle数据库版本,所以有些事情工作,有些则没有。

感谢您在评论中提供的所有帮助!

+0

你是怎么知道你的db需要什么驱动的? –

+0

查看驱动程序文档中支持的版本 –

+0

在尝试查找兼容的驱动程序之前,您需要知道正在使用的数据库。你可以使用SELECT * FROM V $ VERSION来获取版本,然后谷歌搜索驱动程序并阅读文档。 –