* @version 1.0
*/
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.Set;
+import mir.storage.Database;
import mir.storage.store.StorableObject;
import mir.storage.store.StoreIdentifier;
return null;
}
+ public static final StoreIdentifier getStoreIdentifier(
+ Class theEntityClass, String theTable, String id) {
+ if (id == null) {
+ return null;
+ } else {
+ return new StoreIdentifier(theEntityClass, id + "@" + theTable);
+ }
+ }
+
+ public static final StoreIdentifier getStoreIdentifier(Database theStorage,
+ Class theEntityClass, ResultSet rs) throws SQLException {
+
+ String idcol = theStorage.getIdName();
+ String idval = rs.getObject(idcol).toString();
+
+ if (idval != null) {
+ return getStoreIdentifier(theEntityClass,
+ theStorage.getTableName(), idval);
+ }
+
+ return null;
+ }
+
/**
* Method: getNotifyOnReleaseSet()
* Description: returns empty Set, GenericContainer does not implement
* Treiber, Host, User und Passwort, ueber den der Zugriff auf die
* Datenbank erfolgt.
*
- * @version $Id: Database.java,v 1.44.2.17 2003/11/27 20:45:03 rk Exp $
+ * @version $Id: Database.java,v 1.44.2.18 2003/11/27 21:11:53 rk Exp $
* @author rk
*
*/
*/
private Entity makeEntityFromResultSet(ResultSet rs)
throws StorageObjectFailure {
- /** @todo OS: get Pkey from ResultSet and consult ObjectStore */
Map theResultHash = new HashMap();
String theResult = null;
int theType;
Entity returnEntity = null;
try {
+ // ask object store for object @ thePKeyIndex
+ if (StoreUtil.extendsStorableEntity(theEntityClass)) {
+ StoreIdentifier searchSid = StorableObjectEntity.getStoreIdentifier(this,
+ theEntityClass, rs);
+ Entity hit = (Entity) o_store.use(searchSid);
+ if (hit != null) return hit;
+ }
+
+
int size = metadataFields.size();
for (int i = 0; i < size; i++) {