Speichern beim Zeilenwechsel?
8 posts
• Page 1 of 1
Speichern beim Zeilenwechsel?
Mit 1.0 Beta (Vergleich mit 0.8) wird kein Speichern ausgeführt. Beim Wechsel der Zeile geht das Eingetragene verloren. Hat das etwas mit der Einstellung von DataRow, DataSource zu tung?
Ausgabe:
- Code: Select all
rdbUsers.setDataSource(dataSource);
rdbUsers.setName("users");
rdbUsers.open();
System.out.println(rdbUsers);
Ausgabe:
- Code: Select all
com.sibvisions.rad.model.remote.RemoteDataBook ::users::
isOpen = true
RowDefinition :: [ID(storeable)(PK)][FIRSTNAME(storeable)][LASTNAME(storeable)] ... [COUNTRY_ID(storeable)][COUNTRY_NAME(storeable)]
SelectedRow = 0
Current DataPage:
DataPage ::[users] ..., [4]=[3][Test][Tester][null][null][C][C-pass][null][null][null][2][Austria], ... , , CHANGES:
- jsmw
- Posts: 38
- Joined: Tue May 24, 2011 6:33 pm
Re: Speichern beim Zeilenwechsel?
Der DataSource und DataRow writeback isolation level sind grund verschieden. Der DataRow Level veranlasst die Speicherung bei jedem Zeilenwechsel. Der DataSource Level speichert bei Aufruf einer save Methode und daher nicht bei einem Zeilenwechsel. Der Data Source Level ist nicht standardmässig aktiviert und ist auch nicht für alle Anwendungsfälle die bevorzugte Lösung.
Eine unterschiedliche Behandlung in 0.8 und 1.0 beta-1 gibt es nicht. Außer den eingeflossenen Erweiterungen.
Das die eingegebenen Daten verloren gehen, kann viele Gründe haben wie z.B. wenn eine View zum Lesen und eine Tabelle zum Schreiben verwendet wird, kann es sein das nach dem Schreibvorgang die View noch immer die alten Daten anzeigt zu dem gleiche PK.
Anhand des geposteten Source Codes kann keine Hilfestellung gegeben werden, da weder die View, noch DBStorage noch das Datenmodell bekannt ist.
Um dem Problem auf die Spur zu kommen, einfach die Fehlerquellen reduzieren.
Eine unterschiedliche Behandlung in 0.8 und 1.0 beta-1 gibt es nicht. Außer den eingeflossenen Erweiterungen.
Das die eingegebenen Daten verloren gehen, kann viele Gründe haben wie z.B. wenn eine View zum Lesen und eine Tabelle zum Schreiben verwendet wird, kann es sein das nach dem Schreibvorgang die View noch immer die alten Daten anzeigt zu dem gleiche PK.
Anhand des geposteten Source Codes kann keine Hilfestellung gegeben werden, da weder die View, noch DBStorage noch das Datenmodell bekannt ist.
Um dem Problem auf die Spur zu kommen, einfach die Fehlerquellen reduzieren.
- rjahn
- Posts: 41
- Joined: Sun Sep 13, 2009 1:54 pm
Re: Speichern beim Zeilenwechsel?
Keine View in Verwendung siehe unten:
Habe zusätzlich versucht einen Datensatz einzufügen. Folgende Exception:
Vielleicht noch interessant:
Wie gesagt bei 0.8 hat es funktioniert.
- Code: Select all
public DBStorage getUsers() throws Exception
{
DBStorage dbsUsers = (DBStorage)get("users");
if (dbsUsers == null)
{
dbsUsers = new DBStorage();
dbsUsers.setDBAccess(getDBAccess());
dbsUsers.setFromClause("users");
dbsUsers.setWritebackTable("users");
dbsUsers.open();
put("users", dbsUsers);
}
return dbsUsers;
}
Habe zusätzlich versucht einen Datensatz einzufügen. Folgende Exception:
- Code: Select all
FEHLER: Syntaxfehler bei »)« Position: 20
Insert failed! - INSERT INTO users () VALUES () RETURNING id
javax.rad.model.ModelException: Execute Insert failed!
at com.sibvisions.rad.model.remote.RemoteDataBook.executeInsert(Unknown Source)
at com.sibvisions.rad.model.mem.MemDataBook.saveSelectedRow(Unknown Source)
at com.sibvisions.rad.model.mem.MemDataBook.saveAllRows(Unknown Source)
at com.sibvisions.rad.model.mem.MemDataBook.saveDetails(Unknown Source)
at com.sibvisions.rad.model.mem.MemDataBook.saveDataRowLevelDetails(Unknown Source)
at com.sibvisions.rad.model.mem.MemDataBook.setSelectedRow(Unknown Source)
at com.sibvisions.rad.ui.swing.ext.JVxTable.mousePressed(Unknown Source)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:262)
at java.awt.Component.processMouseEvent(Component.java:6264)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Vielleicht noch interessant:
- Code: Select all
Caused by: javax.rad.persist.DataSourceException: Insert failed! - INSERT INTO users () VALUES () RETURNING id
at com.sibvisions.rad.persist.jdbc.PostgreSQLDBAccess.insertPostgres(Unknown Source)
at com.sibvisions.rad.persist.jdbc.PostgreSQLDBAccess.insertDatabaseSpecific(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBAccess.insert(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.executeInsert(Unknown Source)
at com.sibvisions.rad.persist.AbstractStorage.insert(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.invoke(Unknown Source)
at apps.firstapp.frames.DBEdit.<users>.insert(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeWithSessionContext(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeIntern(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.execute(Unknown Source)
at com.sibvisions.rad.server.Server.executeIntern(Unknown Source)
at com.sibvisions.rad.server.Server.execute(Unknown Source)
at com.sibvisions.rad.server.DirectServerConnection.call(Unknown Source)
at javax.rad.remote.AbstractConnection.call(Unknown Source)
... 29 more
Caused by: org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei »)«
Position: 20
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
... 50 more
Wie gesagt bei 0.8 hat es funktioniert.
- jsmw
- Posts: 38
- Joined: Tue May 24, 2011 6:33 pm
Re: Speichern beim Zeilenwechsel?
Jetzt wäre noch die Tabelle interessant - zumindest das create Statement. Die DB ist PostgreSql?
Bitte probieren Sie die aktuelle Release JVx 0.9.
Bitte probieren Sie die aktuelle Release JVx 0.9.
- rjahn
- Posts: 41
- Joined: Sun Sep 13, 2009 1:54 pm
Re: Speichern beim Zeilenwechsel?
Bei V. 0.9 gleiches Verhalten:
- Änderungen verworfen
- Exception bei Neuanalge
DB ist PostgreSQL - Die gewünschten SQL-Scripts:
- Änderungen verworfen
- Exception bei Neuanalge
DB ist PostgreSQL - Die gewünschten SQL-Scripts:
- Code: Select all
CREATE TABLE users (
id SERIAL NOT NULL,
firstname VARCHAR(50),
lastname VARCHAR(50),
company VARCHAR(100),
email VARCHAR(50),
loginname VARCHAR (30),
password VARCHAR(30),
street VARCHAR(50),
postalcode VARCHAR(5),
city VARCHAR(30),
country_id INTEGER,
PRIMARY KEY (id),
FOREIGN KEY(country_id) REFERENCES countries (id)
);
CREATE TABLE countries (
id SERIAL NOT NULL,
country VARCHAR(50),
currency_id INTEGER,
PRIMARY KEY (id),
FOREIGN KEY(currency_id) REFERENCES currencies (id)
);
- jsmw
- Posts: 38
- Joined: Tue May 24, 2011 6:33 pm
Re: Speichern beim Zeilenwechsel?
Dabei handelt es sich leider um einen Bug.
Weitere Details siehe Support System.
Weitere Details siehe Support System.
- rjahn
- Posts: 41
- Joined: Sun Sep 13, 2009 1:54 pm
Re: Speichern beim Zeilenwechsel?
Wenn etwas zu testen wäre, Info posten.
- jsmw
- Posts: 38
- Joined: Tue May 24, 2011 6:33 pm
Re: Speichern beim Zeilenwechsel?
Solche Angebote werden immer gerne angenommen.
Das Problem wurde bereits im Source Code behoben, wird aber erst mit der nächsten BETA Version als Download verfügbar sein.
Sollten Sie die Änderungen früher testen wollen, dann können Sie jederzeit mit dem aktuellen JVx Source testen. Hierfür einfach diesen Anweisungen folgen und den Source Code aus dem SVN Repository abrufen.
Das Problem wurde bereits im Source Code behoben, wird aber erst mit der nächsten BETA Version als Download verfügbar sein.
Sollten Sie die Änderungen früher testen wollen, dann können Sie jederzeit mit dem aktuellen JVx Source testen. Hierfür einfach diesen Anweisungen folgen und den Source Code aus dem SVN Repository abrufen.
-
Support@SIB - Posts: 353
- Joined: Mon Sep 28, 2009 1:56 pm
8 posts
• Page 1 of 1