InteliJ nie widzi plików Hibernate.cfg.xml oraz Event.hbm.xml

Odpowiedz Nowy wątek
2017-10-04 11:49

Rejestracja: 3 lata temu

Ostatnio: 2 lata temu

0

Witam

Struktura projektu wygląda następująco src->main->java->Grywalizacja->resources->hbm

W paczce /resources znajduje się plik Hibernate.cfg.xml dalej w /hbm jest Event.hbm.xml

konfiguracja pliku Hibernate.cfg.xml wygląda tak:

  <session-factory>

    <!-- Database connection settings -->
    <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306</property>
    <property name="connection.username">root</property>
    <property name="connection.password">52Dembiec!</property>

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>

    <!-- SQL dialect -->
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.internal.NoCachingRegionFactory</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>

    <!-- Drop and re-create the database schema on startup -->
    <property name="hbm2ddl.auto">create</property>

**    <mapping resource="hbm/Event.hbm.xml"/>**
 <mapping class="Grywalizacja.EmployeersEntity"/>

  </session-factory>

</hibernate-configuration>

Natomiast pliku Event


<?xml version="1.0"?>

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

**<hibernate-mapping package="hbm">**

    <class name="Grywalizacja.CharacterCard" table="employeers">
        <id name="Login" column="Imie">
            <generator class="increment"/>
        </id>
        <property name="points" type="timestamp" column="IloscPkt"/>
        <property name="title"/>
    </class>

</hibernate-mapping>

Oraz klasa main

package Grywalizacja;

import org.hibernate.*;
import org.hibernate.cfg.*;

class DatabaseApplication {

        public static void main(String[] args) {
            SessionFactory sessionFactory = new Configuration()
                    .configure("/resources/hibernate.cfg.xml") // configures settings from hibernate.cfg.xml
                    .buildSessionFactory();

            Session session = sessionFactory.openSession();
            session.beginTransaction();

            CharacterCard characterCard = (CharacterCard) session.load(CharacterCard.class, new Integer(1));
            if(characterCard != null)
                System.out.println(characterCard.getPoints());

            session.close();
            sessionFactory.close();
        }
    }

Dodając ścieżkę do pliku Event.hbm.xml InteliJ śpiewa mi, że "Cannot resolve file hbm/Event.hbm.xml" strukturę projektu tworzyłem niejako za pomocą InteliJ, to znaczy: po wpisaniu ścieżki klikałem kursorem na czerwony wykrzyknik, który IDE mi wyświetlał pozwalając, żeby sam tworzył sobie katalogi i w końcu plik.

Jeśli chodzi o linijkę w main 
 SessionFactory sessionFactory = new Configuration()
                    .configure("/resources/hibernate.cfg.xml") // configures settings from hibernate.cfg.xml
                    .buildSessionFactory();

Początkowo wyglądała ona tak:


 SessionFactory sessionFactory = new Configuration()
                    .configure() // configures settings from hibernate.cfg.xml
                    .buildSessionFactory();

Dopiero w internecie znalazłem propozycję dodania ścieżki do pliku konfiguracyjnego.

Mimo wszystko nic nie działa, podczas próby kompilacji programu wyświetla mi błąd

"log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [/resources/hibernate.cfg.xml]
at org.hibernate.boot.cfgxml.internal.ConfigLoader.loadConfigXmlResource(ConfigLoader.java:53)
at org.hibernate.boot.registry.StandardServiceRegistryBuilder.configure(StandardServiceRegistryBuilder.java:163)
at org.hibernate.cfg.Configuration.configure(Configuration.java:258)
at Grywalizacja.DatabaseApplication.main(DatabaseApplication.java:12)"

Pomożecie?

edytowany 1x, ostatnio: Noface, 2017-10-04 12:00

Pozostało 580 znaków

2017-10-04 13:14

Rejestracja: 5 lat temu

Ostatnio: 20 godzin temu

Lokalizacja: Warszawa

0

Masz folder resource w intellIJ zaznacozny jako resource?

Pozostało 580 znaków

2017-10-05 09:03

Rejestracja: 3 lata temu

Ostatnio: 2 lata temu

0

Nie, mogę je zamarkować jedynie jako "excluded" z tego względu, że pod folderem projektu każdy nowy katalog InteliJ widzi jako "package" nie zaś jako "Derectory".

EDIT: Trochę pokombinowałem i mam coś takiego https://zapodaj.net/37ce6512dab8e.png.html

Pokombinowałem jeszcze bardziej (zamarkowałem jako "Generated sources root") i teraz już nie podkreśla mi tej ścieżki w XML, na czerwono, ale błąd dalej wyskakuje, teraz wygląda to tak: https://zapodaj.net/375e268690008.png.html

Po małych zmianch w linijce "SessionFactory" wygląda to znowu tak: https://zapodaj.net/9da66e907f61d.png.html

EDIT: Nie jestem pewien co się stało, ale się naprawiło ;O Pojawił się za to nowy problem. InteliJ rzuca wyjątek:
"log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
Thu Oct 05 09:47:26 CEST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Exception in thread "main" 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.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
at Grywalizacja.DatabaseApplication.main(DatabaseApplication.java:13)
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
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.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58)
at org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:123)
at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:42)
at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:20)
at org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:161)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:109)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72)
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: java.sql.SQLException: Unknown system variable 'query_cache_size'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:116)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:853)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:440)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)
at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38)
... 29 more

Process finished with exit code 1
"

Czytałem o org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect internet krzyczał, żeby sprawdzić usera i hasło, sprawdziłem i te dane są poprawne, natomiast Caused by: java.sql.SQLException: Unknown system variable 'query_cache_size', szczerze mówiąc nie rozumiem o co chodzi, sądziłem, że ten problem mam za sobą w momencie gdy pod InteliJ podłączyłem connector 5.1.44.

EDIT: Wszystko już działa, ciężko mi się określić, co zrobiłem, bo zrobiłem milion rzeczy.

Między innymi wywaliłem tamtego MySql i zainstalowałem wersję 8.0, zrobiłem nowy projekt z mniejszym burdlem w strukturze, gdzie mam normalny katalog "resources" zamarkowany jako sources root. Teraz męczę się tylko z kwestiami technicznymi. Temat można zamknąć.

edytowany 6x, ostatnio: Noface, 2017-10-08 15:03

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0