More strictness. Have to use a key to load individual records. Again this is
just as succinct, but type safer: load(FooRecord.class, fooId) vs load(FooRecord.getKey(fooId))
This commit is contained in:
@@ -217,10 +217,10 @@ public abstract class DepotRepository
|
|||||||
*
|
*
|
||||||
* @throws DatabaseException if any problem is encountered communicating with the database.
|
* @throws DatabaseException if any problem is encountered communicating with the database.
|
||||||
*/
|
*/
|
||||||
protected <T extends PersistentRecord> T load (Key<T> key)
|
protected <T extends PersistentRecord> T load (Key<T> key, QueryClause... clauses)
|
||||||
throws DatabaseException
|
throws DatabaseException
|
||||||
{
|
{
|
||||||
return load(key.getPersistentClass(), key);
|
return load(key, CacheStrategy.BEST, clauses);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -228,37 +228,12 @@ public abstract class DepotRepository
|
|||||||
*
|
*
|
||||||
* @throws DatabaseException if any problem is encountered communicating with the database.
|
* @throws DatabaseException if any problem is encountered communicating with the database.
|
||||||
*/
|
*/
|
||||||
protected <T extends PersistentRecord> T load (Class<T> type, Comparable<?> primaryKey,
|
protected <T extends PersistentRecord> T load (Key<T> key, CacheStrategy strategy,
|
||||||
QueryClause... clauses)
|
QueryClause... clauses)
|
||||||
throws DatabaseException
|
throws DatabaseException
|
||||||
{
|
{
|
||||||
clauses = ArrayUtil.append(clauses, _ctx.getMarshaller(type).makePrimaryKey(primaryKey));
|
clauses = ArrayUtil.append(clauses, key);
|
||||||
return load(type, clauses);
|
return _ctx.invoke(new FindOneQuery<T>(_ctx, key.getPersistentClass(), strategy, clauses));
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads the persistent object that matches the specified primary key.
|
|
||||||
*
|
|
||||||
* @throws DatabaseException if any problem is encountered communicating with the database.
|
|
||||||
*/
|
|
||||||
protected <T extends PersistentRecord> T load (Class<T> type, ColumnExp ix, Comparable<?> val,
|
|
||||||
QueryClause... clauses)
|
|
||||||
throws DatabaseException
|
|
||||||
{
|
|
||||||
clauses = ArrayUtil.append(clauses, Key.newKey(type, ix, val));
|
|
||||||
return load(type, clauses);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads the first persistent object that matches the supplied query clauses.
|
|
||||||
*
|
|
||||||
* @throws DatabaseException if any problem is encountered communicating with the database.
|
|
||||||
*/
|
|
||||||
protected <T extends PersistentRecord> T load (
|
|
||||||
Class<T> type, Collection<? extends QueryClause> clauses)
|
|
||||||
throws DatabaseException
|
|
||||||
{
|
|
||||||
return load(type, clauses.toArray(new QueryClause[clauses.size()]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -983,8 +958,8 @@ public abstract class DepotRepository
|
|||||||
DepotMigrationHistoryRecord record;
|
DepotMigrationHistoryRecord record;
|
||||||
while (true) {
|
while (true) {
|
||||||
// check to see if the migration has already been completed
|
// check to see if the migration has already been completed
|
||||||
record = load(DepotMigrationHistoryRecord.class, CacheStrategy.NONE,
|
record = load(DepotMigrationHistoryRecord.getKey(migration.getIdent()),
|
||||||
DepotMigrationHistoryRecord.getKey(migration.getIdent()));
|
CacheStrategy.NONE);
|
||||||
if (record != null && record.whenCompleted != null) {
|
if (record != null && record.whenCompleted != null) {
|
||||||
return; // great, no need to do anything
|
return; // great, no need to do anything
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public class TestRepository extends DepotRepository
|
|||||||
record.numbers = new int[] { 9, 0, 2, 1, 0 };
|
record.numbers = new int[] { 9, 0, 2, 1, 0 };
|
||||||
|
|
||||||
repo.insert(record);
|
repo.insert(record);
|
||||||
System.out.println("Record: " + repo.load(TestRecord.class, record.recordId));
|
System.out.println("Record: " + repo.load(TestRecord.getKey(record.recordId)));
|
||||||
|
|
||||||
// record.age = 25;
|
// record.age = 25;
|
||||||
// record.name = "Bob";
|
// record.name = "Bob";
|
||||||
@@ -100,7 +100,7 @@ public class TestRepository extends DepotRepository
|
|||||||
repo.updatePartial(TestRecord.class, record.recordId,
|
repo.updatePartial(TestRecord.class, record.recordId,
|
||||||
TestRecord.AGE, 25, TestRecord.NAME, "Bob",
|
TestRecord.AGE, 25, TestRecord.NAME, "Bob",
|
||||||
TestRecord.NUMBERS, new int[] { 1, 2, 3, 4, 5 });
|
TestRecord.NUMBERS, new int[] { 1, 2, 3, 4, 5 });
|
||||||
System.out.println("Updated " + repo.load(TestRecord.class, record.recordId));
|
System.out.println("Updated " + repo.load(TestRecord.getKey(record.recordId)));
|
||||||
|
|
||||||
for (int ii = 2; ii < CREATE_RECORDS; ii++) {
|
for (int ii = 2; ii < CREATE_RECORDS; ii++) {
|
||||||
record = new TestRecord();
|
record = new TestRecord();
|
||||||
|
|||||||
Reference in New Issue
Block a user