facebook

How to find the error in .configure()?

  1. MyEclipse IDE
  2.  > 
  3. Off Topic
Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #251364 Reply

    Hi there!

    I hope it is ok to post a question/problem without direct association to MyEclipse? If not, please feel free to erase this post.

    I bought a book about hibernate 3 from dpunkt.verlag and have some trouble to get the first example running. Yesterday at the office it worked with no problems (winXP). Today I am trying to get it running on my mac but it doesn’t work and I can’t see the error and get no exceptions … btw, I am using HSQLDB as used in the book

    I figured out, that in my testclass, the actual test isn’t executed. The setUp() contains this line:

    Configuration cfg = new Configuration().configure();

    The .configure() is the last line executed. This is the output from log4j:

    0    [main] INFO  org.hibernate.cfg.Environment  - Hibernate 3.1.3
    29   [main] INFO  org.hibernate.cfg.Environment  - hibernate.properties not found
    65   [main] INFO  org.hibernate.cfg.Environment  - using CGLIB reflection optimizer
    76   [main] INFO  org.hibernate.cfg.Environment  - using JDK 1.4 java.sql.Timestamp handling
    414  [main] INFO  org.hibernate.cfg.Configuration  - configuring from resource: /hibernate.cfg.xml
    480  [main] INFO  org.hibernate.cfg.Configuration  - Configuration resource: /hibernate.cfg.xml
    1292 [main] DEBUG org.hibernate.util.DTDEntityResolver  - trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd]
    1297 [main] DEBUG org.hibernate.util.DTDEntityResolver  - recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/
    1322 [main] DEBUG org.hibernate.util.DTDEntityResolver  - located [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd] in classpath
    1497 [main] DEBUG org.hibernate.cfg.Configuration  - dialect=org.hibernate.dialect.HSQLDialect
    1502 [main] DEBUG org.hibernate.cfg.Configuration  - connection.driver_class=org.hsqldb.jdbcDriver
    1545 [main] DEBUG org.hibernate.cfg.Configuration  - connection.username=sa
    1547 [main] DEBUG org.hibernate.cfg.Configuration  - connection.password=
    1549 [main] DEBUG org.hibernate.cfg.Configuration  - connection.url=jdbc:hsqldb:file:db/termine
    1552 [main] DEBUG org.hibernate.cfg.Configuration  - null<-org.dom4j.tree.DefaultAttribute@82b9b5 [Attribute: name resource value "net/sf/hibernatesample/einfach/Termin.hbm.xml"]
    1555 [main] INFO  org.hibernate.cfg.Configuration  - Reading mappings from resource: net/sf/hibernatesample/einfach/Termin.hbm.xml
    1587 [main] DEBUG org.hibernate.util.DTDEntityResolver  - trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd]
    1590 [main] DEBUG org.hibernate.util.DTDEntityResolver  - recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/
    1593 [main] DEBUG org.hibernate.util.DTDEntityResolver  - located [http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd] in classpath
    2088 [main] INFO  org.hibernate.cfg.HbmBinder  - Mapping class: net.sf.hibernatesample.einfach.Termin -> Termin
    2177 [main] DEBUG org.hibernate.cfg.HbmBinder  - Mapped property: id -> id 

    Here are all my codes:

    The class to be persisted (Termin.java):

    package net.sf.hibernatesample.einfach;
    import java.util.Date;
    
    public class Termin {
       private long _id;
       private String _title;
       private String _beschreibung;
       private String _ort;
       private Date _zeitPunkt;
    
       public String getBeschreibung() {
          return _beschreibung;
       }
       public void setBeschreibung(String _beschreibung) {
          this._beschreibung = _beschreibung;
       }
       public long getId() {
          return _id;
       }
    
       public void setId(long _id) {
          this._id = _id;
       }
       public String getOrt() {
          return _ort;
       }
       public void setOrt(String _ort) {
          this._ort = _ort;
       }
       public String getTitle() {
          return _title;
       }
       public void setTitle(String _title) {
          this._title = _title;
       }
       public Date getZeitPunkt() {
          return _zeitPunkt;
       }
       public void setZeitPunkt(Date punkt) {
          _zeitPunkt = punkt;
       }
    } 

    The mappingfile Termin.hbm.xml (same package as class):

    <?xml version="1.0" ?>
    <!DOCTYPE hibernate-mapping PUBLIC
       "-//Hibernate/Hibernate Mapping DTD 3.0/EN"
       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="net.sf.hibernatesample.einfach">
       <class name="Termin">
          <id name="id">
             <generator class="native" />
          </id>
          <property name="titel" />
          <property name="beschreibung" />
          <property name="zeitPunkt" />
          <property name="ort" />
       </class>
    </hibernate-mapping>

    The hibernate-config (hibernate.cfg.xml) in root-folder:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
    <hibernate-configuration>
       <session-factory>
          <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
          <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
          <property name="connection.username">sa</property>
          <property name="connection.password"></property>
          <property name="connection.url">jdbc:hsqldb:file:db/termine</property>
          <mapping resource="net/sf/hibernatesample/einfach/Termin.hbm.xml" />
       </session-factory>
    </hibernate-configuration> 

    And the class with the test:

    package net.sf.hibernatesample.einfach;
    
    import java.util.Date;
    
    import junit.framework.TestCase;
    
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.tool.hbm2ddl.SchemaExport;
    
    public class CRUDTests extends TestCase {
    
       private static final String ORT = "Hamburg";
    
       private static final String BESCHREIBUNG = "termin";
    
       private static final String TITEL = "titel";
    
       private static final Date ZEIT_PUNKT = new Date(
             System.currentTimeMillis() + 172800000);
    
       private SessionFactory _sf;
    
       private long _id;
    
       protected void setUp() throws Exception {
          super.setUp();
          Configuration cfg = new Configuration().configure(); // ----- Hier ist Ende!!!
          SchemaExport export = new SchemaExport(cfg);
          export.create(false, true);
          _sf = cfg.buildSessionFactory();
          _id = erzeugeTermin(TITEL, BESCHREIBUNG, ORT, ZEIT_PUNKT);
       }
    
       public void testLoad() {
          Session s = null;
          try {
             s = _sf.openSession();
             Termin termin = (Termin) s.load(Termin.class, _id);
    
             assertEquals(TITEL, termin.getTitle());
             assertEquals(BESCHREIBUNG, termin.getBeschreibung());
             assertEquals(ORT, termin.getOrt());
             assertEquals(ZEIT_PUNKT, termin.getZeitPunkt());
          } finally {
             if (null != s && s.isConnected()) {
                s.close();
             }
          }
       }
    
       private long erzeugeTermin(String titel, String beschreibung, String ort,
             Date zeitPunkt) {
          Termin termin = new Termin();
          termin.setTitle(titel);
          termin.setBeschreibung(beschreibung);
          termin.setOrt(ort);
          termin.setZeitPunkt(zeitPunkt);
          Session s = null;
          Transaction t = null;
          try {
             s = _sf.openSession();
             t = s.beginTransaction();
             s.save(termin);
             t.commit();
          } catch (HibernateException e) {
             if (null != t) {
                t.rollback();
                throw e;
             }
          } finally {
             if (null != s) {
                s.close();
             }
          }
          return termin.getId();
       }
    } 

    And log4j.properties (root-folder):

    log4j.rootLogger=DEBUG, A1
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 

    I don’t get it, what is wrong with it? The junit test fails every time and I get no error or exceptions. Can someone help me please?

    Greetings, Sascha

    #251367 Reply

    ok, found the bug!

    In class “Termin” I named one String ‘title’ (english) and in the mappingfile I named it ‘titel’ … in german, what it was supposed to be.

    But, my main Problem is stil lthe same! I hoped log4j oder someting else would tell me about this problem, but there was no hint at all… how could I have found this error, without checking the code with my own eyes? Is there some kind of debugging for this kind of errors?

    Thanks, Sascha

    #251377 Reply

    Haris Peco
    Member

    Sascha,

    You throws exception in your setUp method and you can’t see exception trace in console
    Open junit view and you will see failed tests and exception PropertyNotFoundException

    Best regards

    #251385 Reply

    Riyad Kalla
    Member

    Moving to OT > Soft Dev

    #251393 Reply

    Oh, thanks very much! I never saw, that junit has its own console!

    But, is there a way to get an error via log4j on the main console? I thought that is one reason for using log4j… ?!?

    #251402 Reply

    Haris Peco
    Member
Viewing 6 posts - 1 through 6 (of 6 total)
Reply To: How to find the error in .configure()?

You must be logged in to post in the forum log in