Hallo,
ich habe hier ein Skript gebaut das während dem Deployment läuft und eine Anzahl von Datensätzen aus einer Datenquelle löschen soll.
import de.espirit.or.Session;
import de.espirit.or.web.SessionManager;
import de.espirit.or.schema.Entity;
import de.espirit.or.schema.KeyValue;
import java.util.*;
import de.espirit.firstspirit.common.gui.CMSDialog;
import de.espirit.firstspirit.access.*;
import de.espirit.firstspirit.access.store.contentstore.*;
import de.espirit.firstspirit.access.store.mediastore.Media;
import de.espirit.firstspirit.access.store.*;
import de.espirit.firstspirit.access.AccessUtil.*;
import de.espirit.or.query.*;
import de.espirit.or.*;
// ...
String schemaName = "Products";
int objectId = 3459;
us = context.getUserService();
cs = us.getStore(Store.CONTENT_STORE, false);
contentSource = cs.getContent2ByName("jobs");
schemaTable = contentSource.getSchema();
Session orSession = schemaTable.getSession();
Select select = orSession.createSelect("Jobs");
equal = new Equal("fs_id", objectId);
cons = new Or();
cons.add(equal);
select.setConstraint(cons);
keys = orSession.fetchKeys(select);
if(keys.size() > 0) {
row = keys.get(0);
Entity entity = orSession.find(row);
context.logError( "Delete DB Entity: " + entity);
orSession.delete(entity);
orSession.commit();
}
// ...
Meine Frage wäre nun, ob das nicht etwas kompakter funktioniert. Ist die fs_id innerhalb des DB-Schemata nicht eindeutig? Muss man umbedingt die Bezeichnung der Tabelle wissen ("Jobs", "jobs") um auf dieser ID etwas ausführen zu können?
Infos:
- FS 4.2.219
- Getestet im Mithras Beispielprojekt
Mit freundlichen Grüßen
Stephan Eginger