我在尝试创建SQL查询时遇到此异常。 我正在尝试在thread的run()方法中使用session。
Hibernate exception org.hibernate.HibernateException: Not able to obtain connection
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:113)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:88)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1162)
at org.hibernate.loader.Loader.doQuery(Loader.java:390)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:112)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1414)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153)
答案 0 :(得分:5)
Java中没有手动内存管理。当对象超出范围时,该对象将自动符合回收条件。什么抓住你的物体?必须有一个类或另一个引用它的对象,因为它不能被GC回收。
答案 1 :(得分:1)
Java的核心概念是,当从RAM中删除对象时,您无法控制(这也意味着您不应该关心)。 通常,Garbace-Collector会选择一个不再被任何东西引用的Object。究竟发生这种情况并不是完全可以预测的。
所以简而言之:你做不到。保留在RAM中的对象仍然被某些东西引用。
答案 2 :(得分:0)
我会参考这篇文章:When does System.gc() do anything
您实际上可以尝试调用垃圾收集器,但Java是一种顽固的动物,只有在感觉需要收集垃圾时才会实际收集垃圾。
答案 3 :(得分:-1)
在Java中,当无法再通过任何活动引用访问时,对象将被列入以进行垃圾回收。
您可以通过将其引用赋值为null来实现此目的:
obectRef = null;
但是,这并不能保证它实际上会被删除。