• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kurs JAVA średniozaawansowany - problem z konfiguracją Hibernate

VPS Starter Arubacloud
+1 głos
289 wizyt
pytanie zadane 29 lipca 2022 w Java przez MKolaj15 Bywalec (2,270 p.)

Witam, przerabiam sobie właśnie kurs JAVA średniozaawansowany. Obecnie jestem na początku modułu - Konfiguracja JPA/Hibernate i tutaj pojawia się problem, którego nie ma pojęcia jak rozwiązać.

Error log wygląda następująco:

"C:\Program Files\Java\jdk-18.0.1.1\bin\java.exe" "-javaagent:D:\Programy\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=57681:D:\Programy\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\kawcz\IdeaProjects\advanced\target\classes;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.jms.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.ejb.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.persistence.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.annotation.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.transaction.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.resource.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.servlet.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.servlet.jsp.jar;C:\Users\kawcz\IdeaProjects\advanced\lib\javax.servlet.jsp.jstl.jar;C:\Users\kawcz\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.2\jakarta.xml.bind-api-2.3.2.jar;C:\Users\kawcz\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.1\jakarta.activation-api-1.2.1.jar;C:\Users\kawcz\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.2\jaxb-runtime-2.3.2.jar;C:\Users\kawcz\.m2\repository\org\glassfish\jaxb\txw2\2.3.2\txw2-2.3.2.jar;C:\Users\kawcz\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.8\istack-commons-runtime-3.0.8.jar;C:\Users\kawcz\.m2\repository\org\jvnet\staxex\stax-ex\1.8.1\stax-ex-1.8.1.jar;C:\Users\kawcz\.m2\repository\com\sun\xml\fastinfoset\FastInfoset\1.2.16\FastInfoset-1.2.16.jar;C:\Users\kawcz\.m2\repository\com\h2database\h2\1.4.197\h2-1.4.197.jar;C:\Users\kawcz\.m2\repository\org\hibernate\hibernate-core\5.2.16.Final\hibernate-core-5.2.16.Final.jar;C:\Users\kawcz\.m2\repository\org\jboss\logging\jboss-logging\3.3.1.Final\jboss-logging-3.3.1.Final.jar;C:\Users\kawcz\.m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.0.Final\hibernate-jpa-2.1-api-1.0.0.Final.jar;C:\Users\kawcz\.m2\repository\org\javassist\javassist\3.22.0-GA\javassist-3.22.0-GA.jar;C:\Users\kawcz\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\kawcz\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec\1.0.1.Final\jboss-transaction-api_1.2_spec-1.0.1.Final.jar;C:\Users\kawcz\.m2\repository\org\jboss\jandex\2.0.3.Final\jandex-2.0.3.Final.jar;C:\Users\kawcz\.m2\repository\com\fasterxml\classmate\1.3.0\classmate-1.3.0.jar;C:\Users\kawcz\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;C:\Users\kawcz\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.0.1.Final\hibernate-commons-annotations-5.0.1.Final.jar pl.clockworkjava.advanced.jpa.JPAApp
lip 29, 2022 11:19:24 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
	name: ClockworkPersistence
	...]
lip 29, 2022 11:19:24 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.16.Final}
lip 29, 2022 11:19:24 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
lip 29, 2022 11:19:24 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
lip 29, 2022 11:19:24 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
lip 29, 2022 11:19:24 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [null] at URL [jdbc:h2:./db/repository]
lip 29, 2022 11:19:24 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {}
lip 29, 2022 11:19:24 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
lip 29, 2022 11:19:24 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
	at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
	at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
	at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:861)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:888)
	at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:78)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
	at pl.clockworkjava.advanced.jpa.JPAApp.<clinit>(JPAApp.java:12)
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling DriverManager#getConnection
	at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:105)
	at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:123)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionCreator.makeConnection(DriverManagerConnectionCreator.java:37)
	at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.addConnections(DriverManagerConnectionProviderImpl.java:363)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:282)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:260)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections$Builder.build(DriverManagerConnectionProviderImpl.java:401)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:112)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:75)
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259)
	... 14 more
Caused by: org.h2.jdbc.JdbcSQLException: Uszkodzenie pliku podczas wczytywania rekordu: null
File corrupted while reading record: null. Possible solution: use the recovery tool [90030-197]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
	at org.h2.message.DbException.get(DbException.java:168)
	at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:196)
	at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:168)
	at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:100)
	at org.h2.engine.Database.getPageStore(Database.java:2538)
	at org.h2.engine.Database.open(Database.java:709)
	at org.h2.engine.Database.openDatabase(Database.java:286)
	at org.h2.engine.Database.<init>(Database.java:280)
	at org.h2.engine.Engine.openSession(Engine.java:66)
	at org.h2.engine.Engine.openSession(Engine.java:179)
	at org.h2.engine.Engine.createSessionAndValidate(Engine.java:157)
	at org.h2.engine.Engine.createSession(Engine.java:140)
	at org.h2.engine.Engine.createSession(Engine.java:28)
	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:351)
	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:124)
	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:103)
	at org.h2.Driver.connect(Driver.java:69)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:191)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionCreator.makeConnection(DriverManagerConnectionCreator.java:34)
	... 29 more
Caused by: java.lang.IllegalStateException: The write format 2 is larger than the supported format 1, and the file was not opened in read-only mode [1.4.197/5]
	at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:870)
	at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:603)
	at org.h2.mvstore.MVStore.<init>(MVStore.java:361)
	at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2934)
	at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:155)
	... 46 more

Process finished with exit code 1

Edit: w komentarzach podrzucę jak wyglądają pliki

Czy ktoś byłby w stanie pomóc rozwiązać ten problem, albo przynajmniej dać jakieś wskazówki? Z góry dziękii. 

komentarz 29 lipca 2022 przez MKolaj15 Bywalec (2,270 p.)

Plik JPAApp.java:

package pl.clockworkjava.advanced.jpa;

import pl.clockworkjava.advanced.jpa.domain.Student;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.util.List;

public class JPAApp {

    static EntityManagerFactory factory = Persistence.createEntityManagerFactory("ClockworkPersistence");

    static EntityManager entityManager = factory.createEntityManager();

    public static void main(String[] args) {

        // CRUD
        // Create
        createStudent();
        // Read
        readStudents();
        // Update
        updateStudent();
        // Delete
        deleteStudent();


    }

    private static void deleteStudent() {

        Student student = entityManager.find(Student.class, 0);
        entityManager.getTransaction().begin();
        entityManager.remove(student);
        entityManager.getTransaction().commit();

    }

    private static void updateStudent() {

        Student kinga = new Student(1,"Kinga");

        entityManager.getTransaction().begin();
        Student student = entityManager.merge(kinga);

        student.setTelephone("1234567");

        entityManager.merge(student);

        entityManager.getTransaction().commit();

    }

    private static void readStudents() {

        Student student = entityManager.find(Student.class, 0);

        System.out.println(student);

        List fromStudent = entityManager.createQuery("from Student").getResultList();

        fromStudent.forEach(System.out::println);

    }

    private static void createStudent() {

        Student pawel = new Student(0,"Pawel");

        entityManager.getTransaction().begin();
        entityManager.persist(pawel);
        entityManager.getTransaction().commit();

    }


}

 

Plik Student.java:

package pl.clockworkjava.advanced.jpa.domain;


import javax.persistence.Entity;
import javax.persistence.Id;


@Entity
public class Student {

    @Id
    private int id;

    private String name;

    private String telephone;

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public Student() {

    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }
}

 

Plik pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pl.clockworkjava</groupId>
    <artifactId>advanced</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>

        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>2.3.2</version>
        </dependency>

        <!-- Runtime, com.sun.xml.bind module -->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.2</version>
        </dependency>


        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.197</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.16.Final</version>
        </dependency>
    </dependencies>


</project>

 

Plik persistence.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/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_1_0.xsd" version="1.0">

    <persistence-unit name="ClockworkPersistence" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

        <properties>
            <property name="connection.driver_class" value="org.h2.Driver"/>
            <property name="hibernate.connection.url" value="jdbc:h2:./db/repository"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

1 odpowiedź

+2 głosów
odpowiedź 29 lipca 2022 przez Wiciorny Ekspert (269,120 p.)
edycja 29 lipca 2022 przez Wiciorny

Caused by: org.h2.jdbc.JdbcSQLException: Uszkodzenie pliku podczas wczytywania rekordu: null

File corrupted while reading record: null.

Baza danych, jak wygląda struktura, jak wygląda konfiguracja.
Pokaż plik resources, konfiguracyjny  widze persistence, okej.

Czy instancja H2 bazy jest skonfigurowana? Sprawdzałeś bazę? 
Jak indeksujesz baze? Bo widzę, że odwołujesz się do znalezienia encji o ID => 0 . 
Masz zainstalowaną baze h2 i drivera skonfigurowanego?
 

INFO: HHH10001005: using driver [null] at URL [jdbc:h2:./db/repository]

Przyczyna: Wystąpił błąd, bo hibernate  nie może połączyć się z bazą danych.
1. Upewnij się, że na serwerze, o którym mowa w pliku konfiguracyjnym, znajduje się baza danych.
2. Sprawdź, czy nazwa użytkownika i hasło do połączenia z bazą danych są poprawne.
3. Sprawdź, czy odpowiednie jary wymagane do połączenia są zmapowane do projektu.

Dodatkowo nie widze jeszcz z poziomu koinfigu  ustawienia właściwości, chyba że je konfigurujez recznie 
 

<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />

 

komentarz 30 lipca 2022 przez Wiciorny Ekspert (269,120 p.)

Dodatkowo jeśli jeszcze nie sprawdzaleś mas z hibernate-core, czyli 5.2.3.Final. sprawdź czy Entity Manager jest z nim kompatybilny jak nie to albo zmniejsz wersje core, albo podnieś wersje Entity

Podobne pytania

0 głosów
1 odpowiedź 3,964 wizyt
pytanie zadane 13 października 2016 w Java przez nemezisso Użytkownik (860 p.)
–1 głos
2 odpowiedzi 1,461 wizyt
pytanie zadane 16 grudnia 2016 w Java przez Swierzak Użytkownik (690 p.)
0 głosów
0 odpowiedzi 323 wizyt
pytanie zadane 21 sierpnia 2019 w Java przez Bartek Kotarski Początkujący (480 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...