gpt4 book ai didi

java - 使用 Oracle、Hibernate 和 Spring...没有返回数据

转载 作者:搜寻专家 更新时间:2023-10-30 21:50:17 24 4
gpt4 key购买 nike

所以我正在尝试使用 spring 和 hibernate 连接到 Oracle 数据库。一切似乎都正常,但我无法确定我正在建立连接。在 DAOImpl 类中,我有以下代码:

    Session session = this.sessionFactory.openSession();
System.out.println("connection: " + session.isConnected());
System.out.println("is open: " +session.isOpen() );
Query q = session.createQuery("from " + Concept.class.getName());
System.out.println(q.getQueryString());
List<Concept> list = q.list();

isConnected 和 isOpen 都返回 true。然而列表是空的。

在 spring.xml 文件中,我继续注释掉用户名和密码,但 isConnected 和 isOpen 仍然返回 true。

看来我在连接上遇到了某种误报。我如何检查连接,如何知道我连接到正确的数据库?数据库受密码保护,因此连接应该会失败。

这一行:

System.out.println(q.getQueryString());

打印:

from com.mypackage.Concept

这是带注释的概念:

@Entity
@Table(appliesTo = "mySchema.CONCEPT") //I've tried with and without the schema
public class Concept {
@Column( name="ID")
private long id;
@Column( name="CODE")
private String code;
@Column(name="description")
private String description;

配置:

        <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:@xx1.foo.com:1521:xx" />
<property name="username" value="user" />
<property name="password" value="pass" />
</bean>
<bean id="hibernate3AnnotatedSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>mypackage.model.Concept</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

最佳答案

您的实体未被引用为 com.mypackage.Concept,而是被引用为 Concept

尝试改变这个:

Query q = session.createQuery("from " + Concept.class.getName());

为此:

Query q = session.createQuery("from " + Concept.class.getSimpleName());

Query q = session.createQuery("from Concept");

如果仍然没有返回任何结果,您可以运行 native 查询来检查可用数据:

String sql = "SELECT * FROM mySchema.CONCEPT";
SQLQuery query = session.createSQLQuery(sql);
List<Object[]> entities = query.list();

如果这没有返回任何数据,那么您在这张表上没有数据。

关于java - 使用 Oracle、Hibernate 和 Spring...没有返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28972799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com