Post

JPA: interrogazione su di una relazione ManyToMany

Ipotesi: relazione molti a molti tra la tabella atleti e la tabella gare implementata tramite una tabella di relazione. Vediamo come si ottiene l'elenco degli atleti con le relative gare alle quali hano partecipato. private void getRaceForAtlets() {         TypedQuery<Atleta> queryFindAllAtlets =  em.createNamedQuery("Atleta.findAll", Atleta.class);         List<Atleta> atletiList = queryFindAllAtlets.getResultList();         atletiList.forEach((a) -> {             a.getGareCollection().forEach((r) -> {                 logger.info("atleta e gara -->" + a.getCognome() + " " + r.getCitta());             });         });     } In pratica è sufficiente ottenere l'elenco degli atleti per intero e poi fare riferimento alla lista delle gare alle quali hanno partecip...

Git: branch e merge, comandi essenziali

Di seguito le operazioni basic da svolgere per lavorare correttamente con i branch in GIT  git init                                                  inizializzo il repository  git add *                                               aggiungo tutti i file al repository  git commit                                            eseguo il commit Una volta che ho un repo in uno stato consistente posso usufruire dei branch:  git checkout -b calcoloCategoria          creo un branch che si chiama calcoloCategoria [LAVORO NEL MIO NUOVO BRANCH]  git commit        ...

JPA: dichiarazione di un Identificativo che utilizza una Sequence

Nel codice sotto, in grassetto, l'annotation che occorre per far si che il DBMS (Postrgesql nel mio caso) creai automaticamente un valore univoco per la chiave primaria. Qui per completezza i dettagli dell'annotation. Annotation:  @GeneratedValue Attributi: strategy = GenerationType.SEQUENCE,  generator = "seq_atleta": seq_atleta è il nome della sequence che deve essere utilizzata per questa chiave primaria. @Entity @Table(name = "atleta") public class Atleta implements Serializable {     private static final long serialVersionUID = 1L;     @Id     @Basic(optional = false)     @NotNull     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_atleta")     @Column(name = "id")     private Long id; [...] }// end of Entity

Da un progetto Java Maven ad un jar "eseguibile" che comprende tutto quanto necessario alla sua esecuzione.

Soluzione all'eccezione sguente: Exception in thread "main" java.lang.NoClassDefFoundError. Questa exception si verifica quando mancano o non sono reperibili tramite il calsspath i jar necessari all'esecuzione. Per lo scopo di cui all'oggetto sono necessari due plugin di MAVEN da aggiugnere nel pom.xml nell'elemento " plugins ": Il primo serve a riportare nel percorso indicato nell'element " outputDirectory" tutti i jar necessari: <plugin>    <!-- Each needed file in the lib folder. -->    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-dependency-plugin</artifactId>    <executions>       <execution>          <id>copy-dependencies</id>          <phase>prepare-package</phase>          <goals>             <goal>c...

Entity Manager senza usare un Application Server JAVA EE

Ora vedremo come avvalerci dei servizi di un Entity Manager senza usare un Application Server JAVA EE.  Questo significa che si potrà utilitzzare un E.M. ad esempio in un'applicazione java realizzata per la console o una swing application. L'articolo è rivolto a chi ha già qualche nozione di JAVAEE. Si danno per assodati i concetti di dipendenza maven, Persistence Unit, Entity, transazione Entity Manager e Factory. Punto primo, se utilizziamo Maven va inserita la dipendenza necessaria reperibile al link  https://mvnrepository.com/artifact/org.eclipse.persistence/eclipselink/2.5.0         <dependency>             <groupId>org.eclipse.persistence</groupId>             <artifactId>eclipselink</artifactId>             <version>2.5.2</version>         </dependency> Passiamo quindi al codice: ...

Log4j - configurazione ed utilizzo

Come aggiungere i Log al vostro progetto Maven tramite Apache Log4J. La dipendenza Maven per Log4J, ad oggi, è reperibile a questo link: https://logging.apache.org/log4j/2.x/maven-artifacts.html Riferimento alla documentazione:  https://logging.apache.org/log4j/ Innanzitutto serve il file "log4j.properties" ed ecco un esempio, uno dei tanti che si trovano in rete: # Root logger option #log4j.rootLogger=DEBUG, stdout, file log4j.rootLogger=INFO, file # Redirect log messages to console #log4j.appender.stdout=org.apache.log4j.ConsoleAppender #log4j.appender.stdout.Target=System.out #log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Redirect log messages to a log file, support file rolling. log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=./fileEsempio.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupI...