当前位置: 首页 > 知识库问答 >
问题:

无法在Hibernate条件中提取结果集

赵君植
2023-03-14

我得到异常后,我适当的结果criteria.unique结果()对象报价。目的查询-从数据库Oracle的表“报价”中获得随机结果

org.hibernate.exception.SQLGrammarExc0019:无法提取org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:80)在org.hibernate.exception.internal.标准SQLExceptionConverter.convert(标准SQLExceptionConverter.java:49)在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)在org.hibernate.engine.jdbc.internal.ResultSetResnImpl.extract(ResultSetResnImpl.java:91)在org.hibernate.loader.Loader.getResultSet(Loader.java:2065)atorg.hibernate.loader.Loader.在org. hibernate. loader.Loader. doQuery(Loader. java: 909)at org. hibernate. loader。在org. hibernate. loader上的Loader. doQueryAnd初始化eNonLazyCollection(Loader. java: 354)。Loader. doList(Loader. java: 2553)在org. hibernate. loader。Loader. doList(Loader. java: 2539)在org. hibernate. loader。Loader. listIgnoreQueryCache(Loader. java: 2369)at org. hibernate. loader。Loader. list(Loader. java: 2364)at org. hibernate. loader.准则。CriteriaLoader. list(CriteriaLoader. java: 126)在org. hibernate. interal。SessionImp. list(SessionInp. java: 1682)在org. hibernate. interal。CriteriaInp. list(CriteriaInp. java: 380)在org. hibernate. interal。CriteriaImp. uniqueResult(CriteriaInp. java: 402)在ua. com. goit. gojava7. kikstarter. dao.数据库。QuoteDaoDbInp. getRlandQuote(QuoteDaoDbInp. java: 42)at sun.反射。nativemethod odAccessorImp. invke0(本机方法)在sun.反射。nativeMEDAccessorInp. invoke(NativeMEDAccessorInp. java: 57)在sun. reff。在java. lang.反射中调用(委托方法访问或执行. java: 43)。在org. springframework. aop. support上调用(method. java: 601)。在org. springframework. aop. framework.java: 190)在org. springframework. aop. framework.java: 157),网址为org. springframework.事务性.拦截器。TransactionInterceptor1美元。在org. springframework.事务性.拦截器上的TransactionAshooSupport. invkeBackinTransaction(TransactionAshooSupport. java: 281)。调用(TransactionInterceptor. java: 96)在org. springframework. aop. framework。java: 179)在org. springframework. aop. framework。jdkDynamicAopProxy. invoke(JdkDynamicAopProxy. java: 207)在com. sun. proxy。$Proxy48. get随机报价(未知来源)在ua. com. goit. gojava7. kikstarter. Controler. servlet。在javax. servlet. http.服务(HttpServlet. java: 621)在javax. servlet. http.服务(HttpServlet. java: 728)在org. apache. catalina. core。在org. apache. catalina. core上的Application ationFilterChain. interalDoFilter(Application ationFilterChain. java: 305)。在org. apache. catalina. core.在org. apache. catalina. core上调用(标准WrapperValve. java: 222)。在org. apache. catalina.身份验证器上调用(Standard ContextValve. java: 123)。在org. apache. catalina. core上调用(AuthentiatorBase. java: 502)。在org. apache. catalina. valves. invoke(Standard HostValve. java: 171)。在org. apache. catalina. valves上调用(ErrorReportValve. java: 99)。AccessLogValve. invoke(AccessLogValve. java: 953)在org. apache. catalina. core。在org. apache. catalina.连接器上调用标准工程师。coyoteAdapter. service(CoyoteAdapter. java: 408)在org. apache. coyot. http 11.进程(AbstractHttp11Processor. java: 1023)在org. apache. coyote。在org. apache. tomcat. util. net上的AbstractProtocol$AbstractConnectionHandler.流程(AbstractAction. java: 589)。JIoEndpoint$SocketProcessor. run(JIoEndpoint. java: 312)at java. util. con当前。ThreadPoolExecutor. runWorker(ThreadPoolExecutor. java: 1145)在java. util. con当前。在java. lang上运行(ThreadPoolExecator. java: 615)。线程.运行(线程. java: 722)

类QuoteDaoDbImpl

@Repository
public class QuoteDaoDbImpl implements QuoteDao {

    private static final String SELECT_RANDOM_QUOTE = "SELECT * FROM (SELECT * FROM quotes ORDER BY DBMS_RANDOM.VALUE) WHERE rownum = 1";

    @Autowired
    private SessionFactory sessionFactory;

    @Transactional
    @Override
    public Quote getRandomQuote() {
        Session session = sessionFactory.getCurrentSession();

        Criteria criteria = session.createCriteria(Quote.class);
        criteria.add(Restrictions.sqlRestriction(SELECT_RANDOM_QUOTE));
        criteria.setMaxResults(1);

        Quote quote = (Quote) criteria.uniqueResult();
        session.close();

        return quote;
    }
}

类别选择类别

@WebServlet("/categories")
public class SelectoinCategories extends HttpServlet {

   /**
    * 
    */
    private static final long serialVersionUID = 1L;

    @Autowired
    private QuoteDao quoteDao;

    @Autowired
    private CategoryDao categoryDao;

    public void init() throws ServletException {

        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, getServletContext());

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        Quote quote = quoteDao.getRandomQuote();
        List<Category> categories = categoryDao.getAll();

        request.setAttribute("content", quote.getContent());
        request.setAttribute("author", quote.getAuthor());
        request.setAttribute("categories", categories);
        request.getRequestDispatcher("WEB-INF/jsp/categories.jsp").forward(request, response);

    }
}

类报价

@Entity
@Table(name = "qoutes")
public class Quote {

    @Id
    @SequenceGenerator(name = "SEQ_GEN", sequenceName = "seq_id", allocationSize = 10)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GEN")
    private int id;

    @Column(name = "content")
    private String content;

    @Column(name = "author")
    private String author;

    public Quote() {
    }

    public Quote(String content, String author) {
        this.content = content;
        this.author = author;
    }

    public int getId() {
        return id;
    }

    public String getContent() {
        return content;
    }

    public String getAuthor() {
        return author;
    }

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

    public void setContent(String quoteContent) {
        this.content = quoteContent;
    }

    public void setAuthor(String quoteAuthor) {
        this.author = quoteAuthor;
    }

    public String toString() {
        return "ID: " + id + "; Content: " + content + "; Author: " + author;
    }

}

表引号

CREATE TABLE quotes
(
id INTEGER NOT NULL,
content VARCHAR2(500) NOT NULL,
author VARCHAR2(100) NOT NULL
);

共有1个答案

韦澄邈
2023-03-14

修改尝试

 private static final String SELECT_RANDOM_QUOTE = 
    "SELECT id, content, author FROM 
    (SELECT * FROM quotes ORDER BY DBMS_RANDOM.VALUE) as quotes  WHERE rownum = 1";
 类似资料:
  • 在hibernate中,我在Dao层中使用了和方法按照我的预期工作,但总是返回空结果集,我仍然无法找出原因,任何人都可以帮助我解决这个问题, 注意:没有异常,只返回空列表 这是我的代码 查找全部方法 通过id方法查找 getSession方法 提前谢谢大家干杯

  • 请帮我解决这个问题。这是我错误的堆栈跟踪。 Servlet。路径为[]的上下文中servlet[DispatchersServlet]的服务()引发异常[请求处理失败;嵌套异常为org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取结果集;SQL[n/a];嵌套的异常是org。冬眠例外SQLGrammarExcept

  • 我想得到分数和日期列在给定范围内的条目数,按分数间隔分组。分数间隔由给定的粒度决定。所以我想回答的问题是:在给定的时间段内,有多少结果的分数在0-25、26-50、56-75等之间。。。在这种情况下,粒度为25。 以下本机SQL查询将生成所需的结果: 我想用自己的查询定义一个查询方法,使用注释。 它是一个简单的bean,它不是一个实体。 我得到以下例外: 组织。springframework。刀。

  • 问题内容: 这是我从数据库中获取用户bean的方法。 这将从数据库返回所有用户记录。有趣的是,我不想从数据库获取密码字段。只想在检索时排除该字段。 我有选择 1)在其他领域使用投影。这需要更多代码才能添加到投影列表中。所以放弃了这个想法。 2)使用Sql,我需要编写一个手动查询,这会杀死Hibernate的主题。 是否有可能排除Bean的列值? 问题答案: 假设以下是您的POJO: User.ja

  • 问题内容: 我希望能够获取此url的返回数据。我什至可以在PHP中做到这一点? 我相信这会返回Javascript回调函数,但是我不知道从哪里开始。 以下是返回的结果集的示例。 任何帮助是极大的赞赏。 问题答案: 正确,它是 带有填充的JSON。 您必须删除函数名称(和括号),然后可以使用解析JSON 。 我曾经为此写过一个函数: 用法:

  • 我的存储库中有nativeQuery查询。 但是当我运行这个页面时,我有一个错误 无法提取结果集;SQL[n/a];嵌套的异常是org。冬眠例外SQLGrammarException:无法提取结果集 产业 能找个人帮我吗。或者如何将这个nativeQuery转换为Hibernate sql?谢谢