[ glamoc @ 08.11.2010. 16:57 ] @
Pokusavam napraviti najjednostavniju java JPA aplikaciju ali se ne uspevam povezati sa bazom.
Konfiguracion fajl persistence.xml izgleda ovako:
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">

    <persistence-unit name="firstJPA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <!-- Not needed, Hibernate supports auto-detection in JSE
        <class>hello.Message</class>
        -->
        <properties>
            <property name="hibernate.archive.autodetection" value="class, hbm"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
            <property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/students"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value=""/>
            
            <!--<property name="hibernate.c3p0.min_size" value="5"/>
            <property name="hibernate.c3p0.max_size" value="20"/>
            <property name="hibernate.c3p0.timeout" value="300"/>
            <property name="hibernate.c3p0.max_statements" value="50"/>
            <property name="hibernate.c3p0.idle_test_period" value="3000"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create"/>  -->
        </properties>
    </persistence-unit>    
</persistence>


a greska koju mi prijavi je:
Code:
17:03:05,390 WARN SettingsFactory:144 - Could not obtain connection metadata
java.sql.SQLException: socket creation error
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
    at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbcDriver.connect(Unknown Source)
    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.cfg.SettingsFactory.buildSettings(SettingsFactory.java:111)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
    at org.vojko.jpa.App.main(App.java:16)


Sta je ustvari HSQL?Na netu nadjoh da je to neki ubrzani SQL.Ja sam podigao obican SQL.Ako treba pokrenuti nesto specijalno da bi ovo radilo molio bih za pomoc.
[ Au197/79 @ 08.11.2010. 20:33 ] @
HSQL je dbms (kao što je i SQL Server, PostgreSQL, MySQL). HSQL se koristi jer je mali, napisan u javi, može se koristiti u embedded modu pa je savršen za testiranje.

Ne znam šta uzrokuje grešku, ali proveri url. Verovatno je url za embedded mod drugačiji od onog za client-server.
[ _Abraxas @ 08.11.2010. 21:06 ] @
Ukoliko zelis da koristis "obican SQL", pod kojim verovatno podrazumevas MySQL Server, potrebno je da promenis:

a) hibernate.connection.driver_class : com.mysql.jdbc.Driver
b) hibernate.dialect : org.hibernate.dialect.MySQLDialect
c) hibernate.connection.url : jdbc:mysql://localhost:3306/testdb (pretpostavljam da si MySQL Server podigao na default portu, a to je 3306)

Naravno, potrebno je da u classpath imas setovan jar u kome se nalazi driver za MySQL ili da ukljucis ovaj jar u projekat.

Ukoliko zelis da koristis HSQLDB, mislim da je potrebno da promenis url u jdbc:hsqldb:mem:testdb. Shema ce se cuvati u operativnoj memoriji. HSQLDB se cesto koristi prilikom unit i integracionog testiranja.

Pozdrav. :)