Usare l'interfaccia e le annotazioni con MyBatis

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Usare l'interfaccia e le annotazioni con MyBatis

    Con IntelliJ le variabili d'ambiente non vanno impostate, l'IDE crea al proprio interno un sistema in cui eseguire i test ed in cui setta le variabili di ambiente autonomamente e soprattutto senza riavviare il computer.
    Impostando le variabili d'ambiente come mi hai consigliato tu riesco finalmente a lanciare i codici del libro direttamente dal prompt.
    Noto però un sacco di errori anche nel prompt.
    Con il prompt non leggo "Failures: 1" ma sempre "Failures: 0" quindi deduco che il test non fallisce mai se pur con errori.
    IntelliJ mi scrive 2 test passati su 3 perché probabilmente è più restrittivo ma in realtà passano anche su IntelliJ.
    La realtà dei fatti è che i 3 test funzionano perché nel DBMS i dati vengono scritti correttamente, sia quando uso il prompt, sia quando uso IntelliJ.
    Devo solo capire perché saltano fuori quegli errori.

    A te escono fuori degli errori come a me oppure tutto liscio come l'olio?

    Prompr di Windows: https://gofile.io/d/kYqum
    IntelliJ: https://gofile.io/d/eLILM

    Allego i file su gofile.io perché il forum mi blocca dicendomi che sono troppi caratteri.
  • Re: Usare l'interfaccia e le annotazioni con MyBatis

    giannino1995 ha scritto:


    Con IntelliJ le variabili d'ambiente non vanno impostate
    Con gli IDE è ovviamente diverso, non puoi fare paragoni. Normalmente gli IDE hanno già un loro Maven embedded. E la locazione del JDK è determinata/scelta in maniera differente, per configurazione esplicita o anche più semplicemente perché è il JDK/runtime usato già per avviare l'IDE (es. Eclipse).

    giannino1995 ha scritto:


    A te escono fuori degli errori come a me oppure tutto liscio come l'olio?
    Se io prendo il springboot-mybatis-demo originale del chapter-06 e gli faccio le seguenti modifiche (come già detto prima):

    1) nel pom.xml metto <mysql.version>8.0.21</mysql.version> dentro <properties>
    2) in application-prod.properties metto:
    -- il driver com.mysql.cj.jdbc.Driver
    -- ?serverTimezone=UTC nel url (perché io ho il server MySQL 8 )
    -- la mia password di root (ovviamente)
    -- spring.datasource.initialization-mode=always (perché altrimenti NON essendo embedded NON usa lo schema.sql)
    3) lascio l'uso di UserMapper nella classe di test (che è già così originalmente)
    4) creo "a mano" il database test (l'applicazione NON lo crea)

    Lanciando: mvn test -Dspring.profiles.active=prod

    Ottengo:
    [INFO] Results:
    [INFO]
    [INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    senza alcun errore/eccezione.

    giannino1995 ha scritto:


    Prompr di Windows: https://gofile.io/d/kYqum
    In quel log in particolare si vede:
    java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.21.jar:8.0.21]
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.21.jar:8.0.21]
            at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.21.jar:8.0.21]
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) ~[mysql-connector-java-8.0.21.jar:8.0.21]
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456) ~[mysql-connector-java-8.0.21.jar:8.0.21]
    Questo sembra più un problema di configurazione del MySQL sulla security. E probabilmente deriva anche dalle opzioni che hai scelto quando hai installato il MySQL.
    Io in particolare avevo indicato all'installer di installare un "Standalone MySQL Server" e poi avevo marcato l'opzione "Use Strong Password Encryption for Authentication"

    giannino1995 ha scritto:


    IntelliJ: https://gofile.io/d/eLILM
    In quel log si vede
    Caused by: java.sql.SQLSyntaxErrorException: PROCEDURE test.identity does not exist
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370)

    Stai usando MySQL (si vede...) E stai usando UserAnnotationMapper! Te l'ho già detto diverse volte: con MySQL NON puoi usare quel UserAnnotationMapper a causa del call identity() che è possibile su H2 ma non su MySQL.
Devi accedere o registrarti per scrivere nel forum
16 risposte