【问题标题】:Using entityManager to get list from database使用 entityManager 从数据库中获取列表
【发布时间】:2015-02-05 21:24:44
【问题描述】:

我一直在 Spring MVC 中工作,完全不知道我在做什么。我正在尝试使用 entityManager 从数据库中检索对象(或记录)列表。我的方法似乎什么也没做:

     @Override
public List<Module> sortStatus(String status) {
    String queryString = "SELECT id, title, description, credit, minimumScore, daysToComplete, status, deleted FROM Module where status='"
            + status + "'";

    Query query = entityManager.createQuery(queryString);

    return (List<Module>) query.getResultList();
}

我正在尝试根据该查询字符串返回一个“模块”列表,但它似乎没有执行。我发现的关于这个问题的文档和解决方案对于我初学者的理解来说非常复杂。任何关于为什么什么都没有发生的简单解释将不胜感激。

[编辑]:持久性文件:

      <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence          http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">
<persistence-unit name="trainingDatabase">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.oreillyauto.javawebtraining.domain.Module</class>
    <class>com.oreillyauto.javawebtraining.domain.TrainingEntry</class>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.DB2400Dialect" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />
        <property name="hibernate.jdbc.batch_size" value="30" />
        <property name="hibernate.max_fetch_depth" value="30" />
    </properties>
</persistence-unit>
</persistence>

【问题讨论】:

  • 您可以发布您的 META-INF/persistence.xml 文件吗?
  • 您似乎对 SQL 和 JPQL 感到困惑。您还有一个串联查询 - 注入任何人?我会说,先做一些阅读然后再试一次。
  • 我已经编辑了帖子。和鲍里斯感谢令人难以置信的有见地的评论。
  • 对不起,我只是说这里的其他人会说的话。首先,这里没有足够的信息来解决任何问题——你如何调用该方法?你怎么知道它什么都不做?其次,您发布的代码远非正确,无法用一个答案来解释。你将不得不学习 JPA。
  • 感谢您提供有用的信息。我什至不确定要在这篇文章中包含什么,因为问题似乎是,在调试之后,仅在我吐出的那个方法中。我想你们可以像你们一样为我指明正确的方向。我将研究 JPA,看看这是否会有所帮助。

标签: java spring-mvc entitymanager


【解决方案1】:

JPQL 不是 SQL:

em.createQuery("select e from Module e where e.status = :status",
    Module.class).setParameter("status", status).getResultList();

【讨论】:

  • 谢谢。在你和鲍里斯的评论之后,我现在意识到这一点。我收到“参数值 [inactive] 与预期类型不匹配”错误。不过我还没有研究过。
猜你喜欢
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 2013-10-16
  • 2019-04-25
  • 1970-01-01
相关资源
最近更新 更多