Problème d'héritage et de mapping
Bonjour,
j'ai posté il y a peu sur dvp, je commence à me dire que ce site devient indispensable :D...
J'ai un souci, je pense, avec mon mapping.
Le hibernate.cfg.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping class="com.xxx.beans.Collab"/>
<mapping class="com.xxx.beans.CollabDetailGene"/>
<mapping class="com.xxx.beans.Service"/>
<mapping class="com.xxx.beans.Societe"/>
</session-factory>
</hibernate-configuration> |
Ma classe CollabDetailGene extends ma classe Collab
Je ne trouve pas d'exemples !
Je spécifie ça comment dans mon cfg.xml ?
Merci par avance.
Edit... Finalement je ne suis pas sur que mon problème vienne de la...
Je vais détailler un peu :
J'ai une requête qui me remplit une List de Collab :
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
| Criteria criteria = session.createCriteria(Collab.class)
.createAlias("soc", "s")
.createAlias("serv", "se")
.setFetchMode("soc", FetchMode.JOIN);
if(!"".equals(nom))
criteria.add(Restrictions.like("nom", "%" + nom + "%"));
if(!"".equals(societe))
criteria.add(Restrictions.like("s.lbsoc", "%" + societe + "%"));
if(!"".equals(service))
criteria.add(Restrictions.like("se.cserv", "%" + service + "%"));
if(!"".equals(initof))
criteria.add(Restrictions.like("initof", "%" + initof + "%"));
if(!"".equals(local))
criteria.add(Restrictions.like("local", "%" + local + "%"));
if(!"".equals(tel))
criteria.add(Restrictions.like("teleph", "%" + tel + "%"));
if(!"".equals(badge))
criteria.add(Restrictions.like("cbadacc", "%" + badge + "%"));
if(!"".equals(monet))
criteria.add(Restrictions.like("profilmon", "%" + monet + "%"));
collabs = criteria.addOrder(Order.desc("nom")).list(); |
Cette requete fonctionne bien, enfin, du moins jusqu'à ce que je crée ma classe CollabDetailGene, qui extends Collab, comme je le disais.
Maintenant j'ai un plantage sur cette requête apparemment :
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 42 43 44 45 46 47 48 49
| GRAVE: "Servlet.service()" pour la servlet ControllerServlet a g�n�r� une exception
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2231)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1596)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
at com.xxx.dao.CollabDaoImpl.findCollabsBy(CollabDaoImpl.java:86)
at com.xxx.service.ServiceAccesDaoImpl.findCollabsBy(ServiceAccesDaoImpl.java:43)
at com.xxx.servlet.ControlServlet.doProcess(ControlServlet.java:133)
at com.xxx.servlet.ControlServlet.doPost(ControlServlet.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
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:595)
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'DTYPE' : nom de colonne incorrect.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
at org.hibernate.loader.Loader.doQuery(Loader.java:697)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
... 23 more |
Alors que je n'ai fait que coder l'autre classe et quelques fonctions (qui n'exploitent pas Collab) !
De plus le plantage se fait avant même que je n'exploite la nouvelle classe, à un endroit ou cela ne plantait pas avant !
Et si je commente tout ce qui tourne autour de ma classe CollabDetailGene, ça remarche !
Pourquoi ça me plante à la tronche ?
Des idées ?
Merci par avance.