Ik ben bezig om m.b.v. Hibernate in Java een webapplicatie te maken om simpel projectmanagement mee uit te voeren. Nu heb ik mooi alles zo geprogrammeerd dat ie de POJO's etc. goed verwerkt.
Er zijn uiteraard ook zaken die je niet m.b.v. POJO's al dan niet i.c.m. HQL kunt oplossen. Dit geeft nogal wel eens wat problemen. Zo komt het voor dat als je kolom type 'TEXT' is je Hibenate gaat flippen. Ik heb het nu dus in ieder geval voor elkaar om een 'SELECT *' uit te voeren in standaard SQL door alle 'TEXT' te vervangen door 'VARCHAR(N)'. Nu kom ik dus bij het volgende:
Daar begint hij dus ook weer te flippen, zonder dat de trace echt duidelijke informatie over de fout geeft.
Mijn vraag is dus: Hoe kom ik er sowieso achter wat de types zijn die hij met een SHOW FULL ophaalt en hoe zou ik dat eventueel kunnen manipuleren.
De reden dat ik overigens graag die kolommetadata wil hebben is omdat ik het erg a-relaxed vind om dubbel - en dus foutgevoelig bij veranderingen - de types te definiëren.
De stacktrace:
Er zijn uiteraard ook zaken die je niet m.b.v. POJO's al dan niet i.c.m. HQL kunt oplossen. Dit geeft nogal wel eens wat problemen. Zo komt het voor dat als je kolom type 'TEXT' is je Hibenate gaat flippen. Ik heb het nu dus in ieder geval voor elkaar om een 'SELECT *' uit te voeren in standaard SQL door alle 'TEXT' te vervangen door 'VARCHAR(N)'. Nu kom ik dus bij het volgende:
code:
1
2
3
4
| List todoItems = (session.createSQLQuery( "SHOW FULL COLUMNS FROM todo_items") .list() ); |
Daar begint hij dus ook weer te flippen, zonder dat de trace echt duidelijke informatie over de fout geeft.
Mijn vraag is dus: Hoe kom ik er sowieso achter wat de types zijn die hij met een SHOW FULL ophaalt en hoe zou ik dat eventueel kunnen manipuleren.
De reden dat ik overigens graag die kolommetadata wil hebben is omdat ik het erg a-relaxed vind om dubbel - en dus foutgevoelig bij veranderingen - de types te definiëren.
De stacktrace:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| No Dialect mapping for JDBC type: -1 org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 at org.hibernate.dialect.TypeNames.get(TypeNames.java:56) at org.hibernate.dialect.TypeNames.get(TypeNames.java:81) at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370) at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559) at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485) at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501) at org.hibernate.loader.Loader.getResultSet(Loader.java:1796) at org.hibernate.loader.Loader.doQuery(Loader.java:674) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.doList(Loader.java:2220) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152) at model.DAO.GeneralDAO.getColumnMetaData(GeneralDAO.java:133) at model.DAO.GeneralDAO.getAllColumnData(GeneralDAO.java:93) at utils.pages.ContentFactory.getCreateItem(ContentFactory.java:73) at utils.pages.PageFactory.createContent(PageFactory.java:30) at utils.pages.PageBuilder.addContent(PageBuilder.java:73) at utils.pages.PageBuilder.(PageBuilder.java:41) at controller.CreateItem.handleRequest(CreateItem.java:63) at org.apache.velocity.servlet.VelocityServlet.doRequest(VelocityServlet.java:365) at org.apache.velocity.servlet.VelocityServlet.doGet(VelocityServlet.java:318) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) |