Newsgroup: it.comp.java
Titolo: Derby embedded problema tracciati a casaccio

Ho svillupato un applicazione JAVA con netbeans 6.1 che usa un
archivio di appoggio
di due soli campi .... Tabella Lenormand con cue campi
Carte di varchar(4)
Significatovarchar(1000)
Ora nella mia macchina di svilluppo va tutto perfettamente .... ma
quando faccio il Deploy
... e carico quanto ho svillupato su di un altra macchina ....
Sto fetente mi crea la tabella con i due campi  entrambi lunghi 255
Char
init:
deps-jar:
compile:
run:
[TopLink Info]: 2008.08.30 07:05:02.148--ServerSession(5799060)--
TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs
(12/06/2007))
[TopLink Info]: 2008.08.30 07:05:02.588--ServerSession(5799060)--file:/
C:/Users/MARCO/Documents/NetBeansProjects/Lenormand/build/classes/-
jdbc:derby:C:\DatabaseJava\LenormandPU login successful
Call: CREATE TABLE APP.LENORMAND (CARTE VARCHAR(255) NOT NULL,
SIGNIFICATO VARCHAR(255), PRIMARY KEY (CARTE))
Query: DataModifyQuery()
Ora visto che io la tabella lo devinita
Carte varchar(4)
Significato varchar(1000)
Perche questo fetente su un altra macchina me la crea con i campi da
255 ?
------------------------------------------------------------------------------------------------------------------------------------
Io in netbeans ho creato la tabella con editor sql fornito con i
service DB
Poi ho creato la connessione allo archvio da me creato con il drive
derby
embedded .....
------------------------------------------------------------------------------------------------------------------------------------
Evidentemente quando non trova il file se lo crea ma probabilmente con
dei valori suoi di
default (255) senza usare i miei che tra l'altro ho dato solo al
momento della creazione del file
con i comandi SQL
----------------------------------------------------------------------------------------------------------------------------------
Come devo fare perche mi crei il file in modo corretto ?

Allora dopo altri tentativi
Se metto il file creato da me  nella cartella di Deploy allora quando
lo lancio sulla macchina del cliente
va tutto bene anche la perche trovando il file non se lo crea .....
(Quindi ho i due campi uno da 4 e uno da 1000)
Ma se manca il file nella cartella che distribuisco Derby se lo crea
di sua iniziativa con i campi entrambi da 255 .... dove cakkio devo
mettere le mani ? perke lo crei come dico io se manca il file ?
Allora so che Derby se mancano i file se li crea se usato in modalità
embedded e infatti io non li ho messi
apposta nella cartella di deploy ... anche per averla piu pulità ....
opzione create=true sulla connessione db ....
Ma non immaginavo se li creasse alla membro di segugio ....... come
faccio perke li crei come volglio io se mancano i file ?
Grazie per le risposte

 Char
Se le tabelle non esistono vengono creati da JPA secondo di come sono 
fatte e come sono annotate le classi annotate con @Entity.
Di default la lunghezza delle stringhe è 255, per cambiare il valore 
devi usare length di @Column.
http://www.caucho.com/resin-3.0/amber/amber-table.xtp#@Column

-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/07/colinux-linux-dentro-windows.html

 


Grazie Andrea sei sempre gentile ...
Io uso TopLink in maniera inconsapevole ....
Comunque gestisco la tabella unicamente con questa classe
La tabella si chiama Lenormand
E i due campi
Carte
Significato
Mi metti nel sorgente sotto le anotazioni nel punto corretto in modo
che Derby (che richiama TopLink da quello che ho
capito dalla tua risposta) crei la tabella correttamente (tramite
toplink) ....
Ho capito bene ??
 --------------------------------------------------------------
Sono alle prime armi porta pazienza
comunque devo anottare sia tabella che campi
ma dove devo farlo ?
Mi puoi mettere le annotazioni nella classe che accede alla tabella ?
Sempre vadano messe li .... sono piuttosto confuso .....
--------------------------------------------------------------
package lenormanversioneuno;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
 *
 * @author
 */
public class SignificatoCarte {
    private String portafuori;
    public String showSignificato(String carte)
    {
    try {
    String driver ="org.apache.derby.jdbc.EmbeddedDriver";
    Class.forName(driver).newInstance();
    Connection conn = null;
    conn = DriverManager.getConnection("jdbc:derby:/DatabaseJava/
Lenormand");
    PreparedStatement pstmt = conn.prepareStatement("SELECT
Carte,Significato FROM lenormand WHERE Carte=?");
    pstmt.setString(1, carte);
    ResultSet rs = pstmt.executeQuery();
    rs.next();
    portafuori = rs.getString(2);
    rs.close();
    pstmt.close();
    conn.close();
    }
    catch (Exception e) {
        portafuori="SIGNIFICATO NON TROVATO IN ARCHIVIO";
        System.out.println("Exception: " + e);
        e.printStackTrace();    }
    return portafuori;
        }
}

Naturalmente le annotations le puo inserire chiunque .... io sono in
difficolta ha individuare il punto ....
Grazie a tutti

 toplink) ....
Cancella quello che ho detto, forse non ho capito bene come lavori.
Dai messaggi di errore che hai riportato nel primo messaggio sembrava 
che usassi Toplink e JPA, dalla porzione di codice che mi hai mandato 
sembra che stai usando direttamente JDBC.
Non so se stai facendo un misto perché hai trovato della documentazione 
su tutte e due e non sapevi la differenza.
Ma ce l'hai il file persistence.xml nel tuo progetto?



Sto usando netBeans 6.1 dentro al progetto non ho la definizione del
file .... uno il drive jdbc .....
il file lo creato io a mano con l'editor sql fornito nei servizi db di
netBeans ....
Il drive jdbc che uso e derby in versione embedded ...
Dentro al progetto netBeans 6.1 l'unico riferimento al nome del file
(in tutto al progetto e questo sotto)
String driver ="org.apache.derby.jdbc.EmbeddedDriver";
Class.forName(driver).newInstance();
Connection conn = null;
conn = DriverManager.getConnection("jdbc:derby:/DatabaseJava/
Lenormand");
Perche la gestione del file la faccio con un altro progetto in questo
progetto devo scemplicemente leggerlo
la classe postata in precedenza e tutto quanto quello che e presente
nel mio progetto in riferimento
a questo file. Posso risolvere il problema mettendo nel deploy il mio
file manualmente cosi non me lo crea ...
Ma mi interessa molto capire il funzionamento della facenda .....
ossia dato che il file lo crea il derby ....
in una maniera a me misteriosa ..... vorrei capire dove mettere le
annotazioni .....
Il file persistence.xml nel mio progetto NON CI STA l'IDE non me lo ha
creato .... devo crearlo io
manualmente ? E come deve essere fatto x il mio file a due campi ?
Bisogna creare questo file ? E poi il driver e/o la connessione derby
se lo vengono a leggere per
conto loro per creare il file un modo corretto ?
Avevo il dubbio mi mancasse qualcosa che definisse il file ... e avevo
inserito nel progetto un "Entity Classes from database" ... facendolo
creare a netBeans dandogli come riferimento la tabella ....
Ma poi visto che non usavo questa classe .... perche ho usato sql per
la lettura ... l'ho tolta dal progetto ....
anche perchè non la usavo per nulla ....
Insomma dentro al progetto non ho definizioni del tracciato
file .....  come devo comportarmi ?
Anche se inserisco una definizione di tracciato il derby come fa a
sapere dove e ? Come si chiama ecc.ecc. ?
Grazie mille ancora

 
-- 
Andrea Francia
http://www.andreafrancia.it/


Ti ho spedito il progetto via mail ....