HQL查询中类型转换的问题

org.hibernate.QueryException: insertion type [org.hibernate.type.BigDecimalType@1d48c] and selection type [org.hibernate.type.DoubleType@293354] at position 2 are not compatible [insert into WsqSqbProfitReportEntity(openId,sqbType,**balanceProfit**,consumeProfit,profitDate,status) select u.openId,'01'**,round(u.userBalance*2.1/36000,2)**,round(u.userConsume*7.5/36000,2),sysdate,'1' from com.lefu.entity.sqb.WsqUserSqbInfoEntity u where u.endDate >= sysdate and u.sqbType = '01']
at org.hibernate.hql.internal.ast.tree.IntoClause.validateTypes(IntoClause.java:125)
at org.hibernate.hql.internal.ast.tree.InsertStatement.validate(InsertStatement.java:56)
at org.hibernate.hql.internal.ast.HqlSqlWalker.postProcessInsert(HqlSqlWalker.java:731)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.insertStatement(HqlSqlBaseWalker.java:497)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:259)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:101)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:119)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:215)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:193)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1649)
at com.lefu.dao.weixin.SqbDao.calculateSqbRate(SqbDao.java:64)
at com.lefu.service.impl.weixin.SqbServiceImpl.calculateSqbRate(SqbServiceImpl.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy85.calculateSqbRate(Unknown Source)
at com.lefu.autoTask.sqb.SqbAutoTask.calculateSqbRate(SqbAutoTask.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:64)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53)
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)


问题相当于向表WsqSqbProfitReportEntity中插入数据,其balanceProfit的类型为BigDecimal,但是,round(u.userBalance*2.1/36000,2)计算出的结果为double类型,导致插入出错,请问应该如何解决呢
谢谢大神指导

2个回答

用cast实现类型转换:
cast((round(u.userBalance*2.1/36000,2)) as BigDecimal)

最后使用createSqlQuery的方式解决

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
HIBERNATE HQL转换SQL的问题
“SELECT * FROM LOAN WHERE LOAN_NO =”+NO +"AND BHDT_BCH_CDE ="+cde(String类型) NO 是一个Long型值为160600471101100 cde是一个String类型 16104 解析成sql的时候就成了 SELECT * FROM LOAN WHERE LOAN_NO = 160600471101100 AND BHDT_BCH_CDE =16104 我希望的时候被解析成这样 SELECT * FROM LOAN WHERE LOAN_NO = 160600471101100 AND BHDT_BCH_CDE =‘16104’ 简单的说就是hql中的String 在转换为sql的时候可以加上单引号 请问这个问题怎么解决呀(手工在hql中加上单引号的方法除外)
hibernate的hql中如何实现类型转换
我写的hql如下: from Test t where cast(t.id as string) like '%"+test.getId().toString()+"%' 出现异常如下,好像是hql错误,但不知道怎么改 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'string)like '%1%' )' at line 1 org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:612) at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:377) at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840) at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:832) at com.jidi.dao.impl.TestDaoImpl.findTest(TestDaoImpl.java:26) String 大小写开头都试过了
Hibernate中字符串的日期转换问题
在Hibernate的HQL语句中,如何将数据库中存储的字符串日期类型转换成日期类型,并排序
SSH整合中,HQL查询问题
[color=#FF0000][b]软件环境配置:[/b][/color]Spring2.5+struts2.1+Hibernate3.1+oracle11g [color=#FF0000][b]问题:[/b][/color] 一个查询的方法,通过hql拼接实现动态查询。在实现按编号查询的时候出现了这样的奇葩问题。。。。 数据库里编号是主键,varchar类型,持久化类对应字段String类型,编号如:0101,0102,0103....0205,0306 在查询0108和0109时报错,其余正常。。。单元测试和tomcat中是一样的结果。不能查询0108和0109。 [b][color=#FF0000]以下是查询 0109 时控制台报错:[/color][/b] ![图片说明](https://img-ask.csdn.net/upload/201608/18/1471521703_679268.png) [b][color=#FF0000]以下是查询 0107 时控制的查询结果:[/color][/b] ![图片说明](https://img-ask.csdn.net/upload/201608/18/1471521735_893979.png) [b][color=#FF0000]查询0107时,自动生成的sql代码:[/color][/b] SQL: select rooms0_.ID as col_0_0_, types1_.NAME as col_1_0_, types1_.ROOMSIZE as col_2_0_, types1_.DPRICE as col_3_0_, types1_.HPRICE as col_4_0_, types1_.DEPOSIT as col_5_0_ from ADMIN5.ROOMS rooms0_, ADMIN5.TYPES types1_ where rooms0_.TYPE_ID=types1_.ID and rooms0_.STATE=1 and rooms0_.ID=[size=18px][color=#FF0000]107[/color][/size] order by types1_.ID, rooms0_.ID [color=#0000FF][size=24px]这里自动转化成了107????为什么啊???那为什么查询0109和0108不自动转换呢?反而说session已经关闭???[/size][/color] [color=#FF0000][b]java代码:[/b][/color] [img=http://img.bbs.csdn.net/upload/201608/18/1471518802_118168.png][/img] [b][color=#FF0000]Spring(代理了hibernate的sessionFactory)代码:[/color][/b] <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> </property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL"> </property> <property name="username" value="xxxxxxx"></property> <property name="password" value="xxxxxxx"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle9Dialect </prop> </props> </property> <property name="mappingResources"> <list> <value>com/accp/entity/Checkin.hbm.xml</value> <value>com/accp/entity/Rooms.hbm.xml</value> <value>com/accp/entity/Admin.hbm.xml</value> <value>com/accp/entity/Reserve.hbm.xml</value> <value>com/accp/entity/Types.hbm.xml</value> <value>com/accp/entity/Orders.hbm.xml</value></list> </property></bean> <!-- 自动扫描包 --> <context:component-scan base-package="com.xxx"></context:component-scan> <!-- 引入事务管理器类 --> <bean class="org.springframework.orm.hibernate3.HibernateTransactionManager" id="tranManger"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- 事务注解 --> <tx:annotation-driven transaction-manager="tranManger"/> </beans>
hibernate list查询 报类型转换异常
查询方法如下: public List<T> find(String hql, Object... param) { Query q = this.getCurrentSession().createQuery(hql); if (param != null && param.length > 0) { for (int i = 0; i < param.length; i++) { q.setParameter(i, param[i]); } } return q.list(); } 执行q.list()的时候,会报String不能转换为Integer错误,hibernate源码打进去跟了一下,截图见附件. find方法的param中,第8个参数是一个很长的加密字符串,hibernate在处理这个的时候,用到OrdinalParameterDescriptor类,第8个参数是设置的的查询条件第八个的类型却是IntegerType.导致报类型转换异常. 我跟了半天也没找到是在什么时候初始化OrdinalParameterDescriptor类设置值的,有这块的高手能否解答一下. hibernate用的4.1.5sp1.尝试用最新的4.2进去也会报这个错.
基于SSH的权限问题HQL语句查询
当前做了一个外包项目 别人把DAO service 组件已经定义好了 表关系 user(用户表) role user_role(用户角色关联表) right(权限) role_right(角色权限关联表) 要求 dao层返回一个user对象 service层返回一个List <Right> 对象 当前遇到问题 [code="java"] //利用hibernate延迟加载 “load(User.class,pk)” ErsUser user = this.getUserDao().findByID(pk); Set setRole = user.getErsUserRoles(); List<ErsRight> setroleright= new ArrayList<ErsRight>(); System.out.println("service 1 角色大小"+setRole.size()); Iterator<ErsRole> it = setRole.iterator(); while(it.hasNext()){ ErsRole role=(ErsRole) it.next(); System.out.println("service 2"); setroleright.addAll(role.getErsRoleRights()); } [/code] 此句ErsRole role=(ErsRole) it.next();抱类型转换异常 setRole.size()打印结果正常,说明对象已经正常取出 因为此问题解决不了 所以求高手们帮我把 [code="java"] Java codeString sql = " select r.id, r.parentid,r.name,r.path,r.isActivity,r.securitycode,r.moduleid "+ "from ers_user u,ers_role re, ers_user_role u_r,ers_right r,ers_role_right r_r where"+ " u.id= u_r.userid and re.id =u_r.roleid and re.id=r_r.roleid and r.id=r_r.rightid and u.id="+cuser.getId(); [/code] 这句sql语句转换为hql语句 由于水平有限 实在是想不出办法,向高手们请教解决办法 [b]问题补充:[/b] 测试员在初期添加数据时 删除了一个关联外键 搭框架时没有改,以至于出现低级 错误 郁闷坏了 周末家里给发现了
从数据库去取出数据的类型转换问题
Session session = HibernateSessionFactory.getSession(); List<Menu> list = new ArrayList<Menu>(); if(menuId > 0){ String hql = " from Menu m left join m.role where roleId = "; list = session.createQuery( hql + menuId).list(); } session.close(); 我从数据库中取出数据,放到list的集合中,但总是报错: Type safety: The expression of type List needs unchecked conversion to conform to List<Menu> 请问如何解决
SSH框架 数据库查询。
hibernate是 3.3.2GA版本,hibernate从3.0升到3.3.2 之后 ,进行数据查询等操作的时候 会报数据类型不匹配的错误。看了下 是由于查询条件中 Java数据类型传的是String 而对应数据库对象的数据类型是num (long类型)。之前不会报这个错可能是hibernate不会对java数据类型做校验 或者做了隐式转换。但我不想改hql的传入值的类型来修改这个错误,因为要改的地方太多了。。有其他办法吗?
java代码中日期类型字符串转换为oracle日期类型问题
<p>问题具体描述:</p> <p>在前台页面表单里有一类型列表框和两个日期文本框,要求:可以根据类型查询或者根据时间段查询或者同事根据类型与时间段查询。</p> <p>封装的属性类:</p> <p>package com.jxc.util;<br>public class DetailProperty {<br>    private String typename;<br>    public String getTypename() {<br>        return typename;<br>    }<br>    public void setTypename(String typename) {<br>        this.typename = typename;<br>    }<br>    private String beginTime;<br>    private String endTime;<br>    <br>    public String getBeginTime() {<br>        return beginTime;<br>    }<br>    public void setBeginTime(String beginTime) {<br>        this.beginTime = beginTime;<br>    }<br>    public String getEndTime() {<br>        return endTime;<br>    }<br>    public void setEndTime(String endTime) {<br>        this.endTime = endTime;<br>    }<br>    <br>    <br><br>}</p> <p>dao层</p> <p>//根据DetailProperty里属性查询进货入库信息<br>    public List&lt;Buyinfo&gt; getById(DetailProperty property) {<br>        Session session = HibernateSessionFactory.getSession();<br>        List&lt;Buyinfo&gt; list=null;<br>        try {<br>            String hql="from Buyinfo b where b.goodstype.typename like :typename and "+<br>            "b.buydate &gt;= :beginTime and b.buydate &lt;= :endTime";<br>            Query query=session.createQuery(hql);<br>            query.setProperties(property);<br>            list = query.list();<br>            <br>        } catch (HibernateException e) {<br>            HibernateSessionFactory.closeSession();<br>            e.printStackTrace();<br>        }finally{<br>            HibernateSessionFactory.closeSession();<br>        }<br>        <br>        return list;<br>    }</p> <p>action层</p> <p>private String tname;<br>    private String bTime;<br>    private String eTime;</p> <p>public String getbTime() {<br>        return bTime;<br>    }<br><br>    public String geteTime() {<br>        return eTime;<br>    }<br><br>    public void setbTime(String bTime) {<br>        this.bTime = bTime;<br>    }<br><br>    public void seteTime(String eTime) {<br>        this.eTime = eTime;<br>    }<br><br>    public String getTname() {<br>        return tname;<br>    }<br><br>    public void setTname(String tname) {<br>        this.tname = tname;<br>    }</p> <p>// 根据DetailProperty里属性查询进货入库信息<br>    public String getById() {<br>        detailProperty = new DetailProperty();<br>        if (tname == null || tname.equals("")) {<br>            detailProperty.setTypename("%");<br>        } else {<br>            detailProperty.setTypename("%" +tname+ "%");<br>        }<br><br>        if (bTime == null || bTime.equals("")) {<br>            detailProperty.setBeginTime("%");<br>        } else {<br>            detailProperty.setBeginTime("%" +bTime+ "%");<br>        }<br><br>        if (eTime == null || eTime.equals("")) {<br>            detailProperty.setEndTime("%");<br>        } else {<br>            detailProperty.setEndTime("%" +eTime+ "%");<br>        }<br><br>        Map session = ActionContext.getContext().getSession();<br>        List list = null;<br>        try {<br>            list = this.buyinfoBiz.getById(detailProperty);<br>            System.out.println(list.size());<br>        } catch (Exception e) {<br><br>            e.printStackTrace();<br>        }<br>        session.put("buyinfo", list);<br>        return "getbyid";<br>    }</p> <p>运行时错误提示:</p> <p>java.lang.String cannot be cast to java.util.Date</p> <p>不知道dao层的hql语句该怎样转化,应该就是hql语句的错误!</p>
2个 java.sql.timestamp 类型的数据 如何在java中按时间从早到晚排序?
我想做一个消息发送模块 现在通过HQL 获得了2个 List的结果集 我想对结果集按时间进行排序 但是timestamp无法直接比较,是不是要转换成其他格式,我只需要精确到秒就行
关于hibernate 分页 类型转换错误
分页代码: public List getAppointStudent(int start,int pageSize) { try{ session=sessionFactory.openSession(); Query query=session.createQuery("[color=red]from Students[/color]") .setFirstResult(start-1) .setMaxResults(pageSize); list=query.list(); }catch(Exception e){ e.printStackTrace(); }finally{ session.close(); } return list; } Students 的配置文件 <hibernate-mapping> <class name="pojo.Students" table="students"> <id name="stu_id" > <generator class="assigned"/> </id> <property name="stu_name" type="string"/> <property name="stu_age" type="string"/> <property name="stu_sex" type="string"/> <property name="stu_department" type="string"/> <property name="stu_telephone" type="integer" > <column name="stu_telephone" sql-type="int"></column> </property> <property name="stu_remarks" type="string"/> <one-to-one name="user" class="pojo.Users" fetch="join" cascade="all" /> <many-to-one name="dormitory" class="pojo.Dormitorys" column="dor_id" fetch="join" cascade="none" lazy="false"/> </class> 发现一个问题 就是 返回的list 里面的对象是String 类型,不是我想得到的Students 这个pojo类型,是不是和映射文件设置成关联有关系。 难道一定用 select .... 这样的hql语句 得到一个object[] 在拆分数据,然后在 封装成一个pojo 如果这样我无语了。 [b]问题补充:[/b] pojo: public class Students { private String stu_id; private String stu_name; private String stu_sex; private String stu_age; private Integer stu_telephone; private String stu_department; private String stu_remarks; private Dormitorys dormitory; private Users user; public Dormitorys getDormitory() { return dormitory; } public void setDormitory(Dormitorys dormitory) { this.dormitory = dormitory; } public Users getUser() { return user; } public void setUser(Users user) { this.user = user; } public String getStu_id() { return stu_id; } public void setStu_id(String stu_id) { this.stu_id = stu_id; } public String getStu_name() { return stu_name; } public void setStu_name(String stu_name) { this.stu_name = stu_name; } public String getStu_sex() { return stu_sex; } public void setStu_sex(String stu_sex) { this.stu_sex = stu_sex; } public String getStu_age() { return stu_age; } public void setStu_age(String stu_age) { this.stu_age = stu_age; } public Integer getStu_telephone() { return stu_telephone; } public void setStu_telephone(Integer stu_telephone) { this.stu_telephone = stu_telephone; } public String getStu_department() { return stu_department; } public void setStu_department(String stu_department) { this.stu_department = stu_department; } public String getStu_remarks() { return stu_remarks; } public void setStu_remarks(String stu_remarks) { this.stu_remarks = stu_remarks; } } 异常: [color=red]java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer[/color] at org.hibernate.type.IntegerType.set(IntegerType.java:41) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:83) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:65) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1514) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1576) at org.hibernate.loader.Loader.doQuery(Loader.java:661) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.loadEntity(Loader.java:1785) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730) at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365) at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346) at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123) at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177) at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87) at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862) at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266) at org.hibernate.type.EntityType.resolve(EntityType.java:303) at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116) at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842) at org.hibernate.loader.Loader.doQuery(Loader.java:717) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.doList(Loader.java:2145) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029) at org.hibernate.loader.Loader.list(Loader.java:2024) at org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:887) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) at db.dao.CountDAO.getAppointStudent(CountDAO.java:49) at action.StudentsPageAction.execute(StudentsPageAction.java:65) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at servlet.DormitoryServlet.process(DormitoryServlet.java:23) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(Unknown Source) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
数据库informix 中lvarchar(x)的使用
我以前在数据中使用是varchar(x) .但x最大只能是255, 所以我使用了lvarchar(x) ,把这个x放大了,informix 的版本10. 所以lvarchar(x) 这个写法没有错,但在使用Hibnate 中,用hql 语句时报错,类型无法转换。 我应该怎么处理。谢谢了。
jqgri后台封装如何确定其类型
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>我在后台已经用把前台传过来的json格式数据解析,然后生成了对应的hql语句 问题就出在,在向Hibernate中</p> <pre name="code" class="java">public List&lt;Student&gt; queryHqlStudentList(String hql , int pageSize, int currentPage, List formSelects){ Query query = getSession().createQuery(hql); if (formSelects != null &amp;&amp; formSelects.size() &gt; 0 &amp;&amp; !formSelects.isEmpty()){ for (int i =0; i &lt; formSelects.size(); i++){ FormSelect c = (FormSelect)formSelects.get(i); Object obj = new String(c.getFileValue()); query.setParameter(i, obj);(此句报类型转换错误(从前台解析的全是 string的类型,直接拼接成sql,所以我并不可以知道是什么类型,所以请知道的各位,或者有封装过jqgrid的好基友们 指教)) } } return query.setFirstResult((currentPage - 1) * pageSize).setMaxResults(pageSize).list(); }</pre> <p> </p> <p> </p> <p> </p> </div>
Hibernate数据库DATETIME类型字段映射为Date类型后的强制转型错误
用Struts2 + Hibernate(3.3.1)做了一个测试程序,查询的时候遇到了强制转换类型错误,数据库是MySQL 5.0,麻烦看下代码,很简单。 异常提示: [code="java"] java.lang.ClassCastException: java.lang.String at org.hibernate.type.DateType.toString(DateType.java:101) at org.hibernate.type.NullableType.nullSafeToString(NullableType.java:117) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:158) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136) at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:61) at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:514) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1589) at org.hibernate.loader.Loader.doQuery(Loader.java:696) ………… [/code] Hibernate 映射文件: [code="xml"] <class name="model.SData" table="SDATA"> <id name="id" column="ID" type="integer"> <generator class="native" /> </id> <property name="name" column="NAME" type="string" length="32" /> <property name="addr" column="ADDR" type="string" length="16" /> <!-- MySQL数据库中TIME字段的类型为DATETIME --> <property name="time" column="TIME" type="date" /> <property name="line" column="LINE" type="string" length="16" /> </class> [/code] DAO类 [code="java"] package dao; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import model.SData; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; public class SDao { private Session session = null; private Transaction tx = null; Map<String, String> map = null; @SuppressWarnings("unchecked") public List<SData> query( SData data ) { session = HibernateUtil.getCurrentSession(); try { String hql = createSQL(data); Query query = HibernateUtil.getCurrentSession().createQuery(hql); Iterator<String> it = map.keySet().iterator(); while (it.hasNext()) { String key = it.next(); query.setParameter(key, map.get(key)); } query.setMaxResults(512); List list = query.list(); return list; } catch (HibernateException e) { HibernateUtil.rollbackTransaction(); } return null; } private String createSQL( SData data ) { StringBuffer hql = new StringBuffer(); hql.append("from SData as s where 1=1 "); map = new HashMap<String, String>(); String value = data.getName(); if (value != null && value.length() > 0) { map.put("name", "%" + value + "%"); hql.append("and s.name like :name "); } value = data.getAddr(); if (value != null && value.length() > 0) { map.put("addr", value); hql.append("and s.addr = :addr "); } Date time = data.getTime(); if (time != null) { long now = time.getTime(); now = now - now % 86400000 + 57600000; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); map.put("begin", sdf.format(new Date(now))); map.put("end", sdf.format(new Date(now + 86400000))); hql.append("and s.time between :begin and :end "); } value = data.getLine(); if (value != null && value.length() > 0) { map.put("line", value); hql.append("and s.line = :line "); } return hql.toString(); } } [/code] 个人感觉应该不是大问题,不过我找了很久还是没想出来解决办法,实属无奈来此发帖劳烦大家,求帮忙,感激不尽。
[Ljava.lang.Object;
Map<String, Object> paras = new HashMap<String, Object>(); //List<Map<String,Object>> listCostingRegisterMes = new ArrayList<Map<String,Object>>(); String hql="from SmpsupplyCostingRegister a join a.costingType costingType where a.workNum = '"+workNum+"'"; List<Map<String,Object>> listCostingRegists = dataDao.find(hql, paras); if (listCostingRegists.size()>0) { for (int i = 0; i < listCostingRegists.size(); i++) { Map<String,Object> suppliersMap = listCostingRegists.get(i); HSSFRow row = s.createRow(i + 1); HSSFCell workNumValue = row.createCell(0); HSSFCell workNameValue = row.createCell(1); HSSFCell costingTypeNameValue = row.createCell(2); HSSFCell residualCostValue = row.createCell(3); HSSFCell controlCostsValue = row.createCell(4); HSSFCell costChangeValue = row.createCell(5); HSSFCell totalCostValue = row.createCell(6); HSSFCell purchaseTotalValue = row.createCell(7); HSSFCell confirmationAddValue = row.createCell(8); HSSFCell disconfirmationAddValue = row.createCell(9); HSSFCell addMoneyNoValue = row.createCell(10); workNumValue.setCellValue(vObject(suppliersMap.get("workNum"))); workNameValue.setCellValue(vObject(suppliersMap.get("workName"))); costingTypeNameValue.setCellValue(vObject(suppliersMap.get("name"))); residualCostValue.setCellValue(vObject(suppliersMap.get("residualCost"))); controlCostsValue.setCellValue(vObject(suppliersMap.get("controlCosts"))); costChangeValue.setCellValue(vObject(suppliersMap.get("costChange"))); totalCostValue.setCellValue(vObject(suppliersMap.get("totalCost"))); purchaseTotalValue.setCellValue(vObject(suppliersMap.get("purchaseTotal"))); confirmationAddValue.setCellValue(vObject(suppliersMap.get("confirmationAdd"))); disconfirmationAddValue.setCellValue(vObject(suppliersMap.get("disconfirmationAdd"))); addMoneyNoValue.setCellValue(vObject(suppliersMap.get("addMoneyNo"))); } } wb.write(fos); fos.close(); ``` [Ljava.lang.Object; cannot be cast to java.util.Map 为什么总是报数据类型转换错误?要怎么解决啊? ```
Spring事务的问题,bulkUpdate,或query.executeUpdate
今天在测试spring任务调度时,突然发现我配的声明事务不起作用了,找了好久才发现不是我的事务的问题,是我在Dao中用了一个方法有问题 方法如下: public void updateByIds(final Set<String> updateIds)throws DaoException{ try { String queryString="update from Yaoyueyingyue y set y.state='2' where y.yaoyueid in (?)"; getHibernateTemplate().bulkUpdate(queryString, updateIds.toArray()); } catch (Exception e) { e.printStackTrace(); throw new DaoException(this.getClassName()+e.getMessage()); } updateIds是一个包含要更新的编号集合,我发现用这个方法在我Manager中调用Dao事务就不起作用了,后来又改成这样 public void updateByIds(final Set<String> updateIds)throws DaoException{ try { getHibernateTemplate().execute(new HibernateCallback(){ final String hql="update Yaoyueyingyue y set y.state=2 where yaoyueid in (:yaoyueid)"; public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query=session.createQuery(hql); query.setParameterList("yaoyueid", updateIds); query.executeUpdate(); return null; } }); } catch (Exception e) { e.printStackTrace(); throw new DaoException(this.getClassName()+e.getMessage()); } } 事务还是不行,这两个方法好像不受spring AOP事务管理,只要执行到这个Dao的方法就自动提交了,出来异常也不能回滚,真是郁闷,小弟对这块不是很明白,为什么事务就不行了呢,希望那位牛人,帮我解释下,谢谢了, 我的spring声明事务大概如下: <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <property name="forceShutdown"> <value>true</value></property> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="300"/> </bean> <bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager"><ref bean="atomikosTransactionManager" /></property> <property name="userTransaction"><ref bean="atomikosUserTransaction" /></property> </bean> <aop:config> <!-- This definition creates auto-proxy infrastructure based on the given pointcut, expressed in AspectJ pointcut language. Here: applying the advice named "txAdvice" to all methods on classes named PetStoreImpl. --> <aop:advisor pointcut="execution(* com.goal.log.manager.*.*(..))" advice-ref="txAdvice" /> <aop:advisor pointcut="execution(* com.goal.system.manager.*.*(..))" advice-ref="txAdvice" /> </aop:config> <!-- @Transactional 时要使用下面一行 --> <!-- <tx:annotation-driven transaction-manager="springTransactionManager" proxy-target-class="true"/> --> <!-- Transaction advice definition, based on method name patterns. Defaults to PROPAGATION_REQUIRED for all methods whose name starts with "insert" or "update", and to PROPAGATION_REQUIRED with read-only hint for all other methods.--> <!-- 引用springTransactionManager --> <tx:advice id="txAdvice" transaction-manager="springTransactionManager"> <tx:attributes> <tx:method name="save*" rollback-for="java.lang.Exception"/> <tx:method name="insert*" rollback-for="java.lang.Exception"/> .... <tx:method name="*" read-only="true" rollback-for="java.lang.Exception"/> </tx:attributes> </tx:advice> atomikosTransactionManager这个东西不用管,是一个开源的支持JTA分布式的JAR,希望有人能够为我解答........ [b]问题补充:[/b] 谢谢你的解答,但是我还是不明白你的意思,你是指我的Dao中用了内部类吗,你所指的 “调用updateByIds方法 的代码 跳出你的当前类 然后在别的类调用当前了类的接口中的方法updateByIds ”是指什么意思,能不能说明白点,谢谢了!!! [b]问题补充:[/b] 谢谢你的答复,你的意思我也理解,但好像不是这个问题,因为我并没有像你说的那样在类的内部调用,我的所有方法都是在业务逻辑层调用的Manager层,Manager层我是在Spring中配置了的声明事务的,我给你据个例子: 这两个方法都是Dao中的 方法一: [code="java"] public void updateByIds(final Set<String> updateIds)throws DaoException{ try { /*String queryString="update from Yaoyuepub y set y.state='2' where y.yaoyueid in (?)"; getHibernateTemplate().bulkUpdate(queryString, updateIds.toArray());*/ getHibernateTemplate().execute(new HibernateCallback(){ final String hql="update Yaoyuepub y set y.state=2 where yaoyueid in (:yaoyueid)"; public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query=session.createQuery(hql); query.setParameterList("yaoyueid", updateIds); query.executeUpdate(); return null; } } ); } catch (Exception e) { e.printStackTrace(); throw new DaoException(this.getClassName()+e.getMessage()); } } [/code] 这个方法是把所有的要改的ID都一次性更新调,我是不想执行多条sql,在Manager中调用这个方法事务就起不了作用,还有一个方法,就是普通的更新对象 [code="java"] public void update(T t) throws DaoException { try { getHibernateTemplate().update(t); } catch (Exception e) { throw new DaoException(getClassName() + " update exception...",e); } } [/code] 要是把刚才Manager中调用改成循环执行下面的方法一个一个对象,就是有事务的,所以调用都一样,更类的内部调用应给没有关系的,我认为不管是query.executeUpdate还是spring自己提供的bulkUpdate这两个方法都是要写sql的,目的是满足批量更新和更大的灵活性,但是事务就不行了,我认为肯定可以让声明式事务支持这两个方法,就是不知道怎么配置一下,你可以自己在代码中分别做个例子试试,看看是不是用批量更新事务就控制不了了, 这就是我的理解,还请多多指教,谢谢诶!!! [b]问题补充:[/b] 我测试过了,以为可以了,但是还是不行,下面是我调用的一小部分代码 [code="java"] public void runThread() { Set<String> updateIds = new HashSet<String>(); for (Yaoyueyingyue yaoyueyingyue : yaoyueyingyues) { updateIds.add(yaoyueyingyue.getYaoyueid()); } if (updateIds.size() > 0) { yaoyuepubDao.updateByIds(updateIds); if(true) throw new RuntimeException("AAAAAAAAAAAAAAAAAAAAAAAAA"); yaoyueyingyueDao.updateByIds(updateIds); } [/code] 上面是我Manager中Spring任务调度自动执行的方法的一小部分,我中间估计抛出了异常,但是yaoyuepubDao数据库中都更新了,事务不起作用,我估计其实就是和bulkUpdate方法一样,只要这个方法能用事务控制了的话,应该没问题了 [b]问题补充:[/b] 下面是我在网上拷贝的--------------------------------   Spring的HibernateTemplate提供了Hibernate的完美封装,即通过匿名类实现回调,来保证Session的自动资源管理和事务的管理。其中核心方法是:   java代码: HibernateTemplate.execute(new HibernateCallback() {  public Object doInHibernate(Session session) throws HibernateException {   ....  } }   回调方法提供了session作为参数,有了session,就可以自由的使用Hibernate API编程了。使用了spring的之后,代码修改如下:   web层代码:   java代码: DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class); detachedCriteria.createAlias("employees", "e").add(Restrictions.eq("name", "department")).add(Restrictions.gt(("e.age"), new Integer(20))); departmentManager.findByCriteria(detachedCriteria);   构造detachedCriteria,作为参数传递给departmentManager   业务层代码使用spring,DepartmentManager的findByCriteria如下:   java代码: public List findByCriteria(final DetachedCriteria detachedCriteria) {  return (List) getHibernateTemplate().execute(new HibernateCallback() {   public Object doInHibernate(Session session) throws HibernateException {    Criteria criteria = detachedCriteria.getExecutableCriteria(session);    return criteria.list();   }  }); }   实际上也就是:   java代码: Criteria criteria = detachedCriteria.getExecutableCriteria(session); return criteria.list();   而已   但是该程序代码执行,会抛出强制类型转换异常!   我跟踪了一下spring和Hibernate源代码,原因如下:   spring的HibernateTemplate的execute方法提供的回调接口具有Session作为参数,但是实际上,默认情况下,HibernateTemplate传递给回调接口的session并不是org.hibernate.impl.SessionImpl类,而是SessionImpl类的一个Proxy类。之所以替换成为一个Proxy类,HibernateTemplate的注释说明,Proxy提供了一些额外的功能,包括自动设置Cachable,Transaction的超时时间,Session资源的更积极的关闭等等。   java代码: private boolean exposeNativeSession = false; ...   execute方法内部: Session sessionToExpose = (exposeNativeSession ? session : createSessionProxy(session));   但是遗憾的是,Hibernate的DetachedCriteria的setExecutableCriteria方法却要求将session参数强制转为SessionImpl,但是spring传过来的却是一个Proxy类,因此就报错了。   java代码: public Criteria getExecutableCriteria(Session session) {  impl.setSession( (SessionImpl) session ); // 要求SessionImpl,Spring传递的是Proxy  return impl; }   解决方法,禁止Spring的HibernateTemplate传递Proxy类,强制要求它传递真实的SessionImpl类,即给exexute方法增加一个参数,提供参数为true,如下:   java代码: public List findByCriteria(final DetachedCriteria detachedCriteria) {  return (List) getHibernateTemplate().execute(new HibernateCallback() {   public Object doInHibernate(Session session) throws HibernateException {    Criteria criteria = detachedCriteria.getExecutableCriteria(session);    return criteria.list();   }  }, true); } [b]问题补充:[/b] bulkUpdate这个方法按你给的源码,那我是用错了,但是你所说的我的模拟异常不再AOP的事务之内,我就不同意你的观点了,[code="java"] if (updateIds.size() > 0) { yaoyuepubDao.updateByIds(updateIds); // 事务开启 执行updateByIds 事务提交 if(true) throw new RuntimeException("AAAAAAAAAAAAAAAAAAAAAAAAA"); yaoyueyingyueDao.updateByIds(updateIds); // 事务开启 执行updateByIds 事务提交 } [/code] 我这段代码是两个Dao的操作,而这两个Dao的操作是被封装在一个Manger中的方法中的,Manager的每个方法都是有事务的,在操作玩第一个Dao后抛出一个RunTime异常,这时候第一个Dao操作已经执行了,这时候事务应该回滚的,不应该去更新的第一个Dao的操作,Manager中本来就业务层,中间有好多的Dao操作,事务应该控制这些Dao要不都提交,要不都回滚,你说呢,而你说的在11-12行之间加异常,那在一个Dao中,再说的的Dao是没有配事务的,又何谈回滚呢,要是把我上面两个Dao操作改成普通的对象更新,是可以回滚的,这个我肯定 比如这样 [code="java"] yaoyuepubDao.update(yaoyuepub); if(true) throw new RuntimeException("AAAAAAAAAAAAAAAAAAAAAAAAA"); yaoyueyingyueDao.update(yaoyueyingyue); [/code] 这个时候如果抛出异常,yaoyuepub是不会更新到数据库的,会回滚的,所以我总结就是executeUpdate(sql)这个方法我们直接sql,和操作对象是不一样的的,具体我也没有研究 [b]问题补充:[/b] [code="java"] public void updateByIds(final Set<String> updateIds)throws DaoException{ try { getHibernateTemplate().execute(new HibernateCallback(){ final String hql="update Yaoyuepub y set y.state=2 where yaoyueid in (:yaoyueid)"; public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query=session.createQuery(hql); query.setParameterList("yaoyueid", updateIds); query.executeUpdate(); return null; } } , true); } catch (Exception e) { e.printStackTrace(); throw new DaoException(this.getClassName()+e.getMessage()); } } [/code] 把上面的updateIds方法改成: [code="java"] public void updateByIds(final Set<String> updateIds)throws DaoException{ try { DetachedCriteria dc=DetachedCriteria.forClass(Yaoyuepub.class); dc.add(Restrictions.in("yaoyueid", updateIds)); List<Yaoyuepub> yaoyuepubs=select(dc); for(Yaoyuepub y:yaoyuepubs){ update(y); } } catch (Exception e) { e.printStackTrace(); throw new DaoException(this.getClassName()+e.getMessage()); } } [/code] 所有的调用都不变,spring事务就起作用了,说明自己createQuery然后executeUpdate是不被事务管理的,后其他都没有关系
java.sql.SQLException: "Too many connections"
org.hibernate.exception.JDBCConnectionException: Cannot open connection OperateDatabase.java queryAll(String hql)查询结果出来啦 at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1577) at org.hibernate.loader.Loader.doQuery(Loader.java:696) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.doList(Loader.java:2232) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) at org.hibernate.loader.Loader.list(Loader.java:2124) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1723) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175) at hibernate.OperateDatabase.querySql(OperateDatabase.java:128) at socket.Server$1.run(Server.java:225) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.SQLException: Data source rejected establishment of connection, message from server: "Too many connections" at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1018) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2568) at com.mysql.jdbc.Connection.<init>(Connection.java:1485) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ... 15 more Exception in thread "Thread-27" java.lang.NullPointerException at socket.Server$1.run(Server.java:226) at java.lang.Thread.run(Unknown Source) ClientThread.java线程睡眠1000毫秒=1秒 ClientThread.java从客户端发来的聊天内容:{"actiontype":"1","receverName":"192.168.0.107","msgType":false,"senderName":"192.168.0.108","chatDate":"2017-03-03 18:21:08"} ClientThread.java动作类型1 Exception in thread "Thread-25" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1577) at org.hibernate.loader.Loader.doQuery(Loader.java:696) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.doList(Loader.java:2232) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) at org.hibernate.loader.Loader.list(Loader.java:2124) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) at hibernate.OperateDatabase.query(OperateDatabase.java:87) at chat.ClientThread.run(ClientThread.java:111) Caused by: java.sql.SQLException: Data source rejected establishment of connection, message from server: "Too many connections" at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1018) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2568) at com.mysql.jdbc.Connection.<init>(Connection.java:1485) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ... 15 more hibernate.hbm.xml文件内容,注释部分是连接池,但貌似使用也不管事 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- mysql 数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- mysql 数据库名 myandroid 端口3306 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/myandroid?useUnicode=true&amp;characterEncoding=utf-8</property> <!-- 数据的登录用户名 --> <property name="hibernate.connection.username">root</property> <!-- 数据库的登录秘密 --> <property name="hibernate.connection.password">admin</property> <!-- 下面这一行很重要, 如果hibernate.connection.provider_class没有定义,就会使用内置的连接池,所以如果不想用hibernate内置的连接池,下面这一行必须要写的 --> <!-- <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="hibernate.c3p0.max_size">20</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.timeout">120</property> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">120</property> <property name="hibernate.c3p0.acquire_increment">2</property> --> <!-- 方言:为每一种数据库提供适配器,方便转换 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 2,其他配置 --> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <!-- 所有的表映射XML文件必须在此录入 导入映射文件--> <mapping resource="hibernate/Customer.hbm.xml"/> <mapping resource="hibernate/ChatLog.hbm.xml"/> <mapping resource="hibernate/ChatMessage.hbm.xml"/> <mapping resource="hibernate/Pitch.hbm.xml"/> </session-factory> </hibernate-configuration>
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
立即提问