JavaでAndroidアプリを作ってます。
SQliteではなくRealmを使ってデータ管理する想定で実装を進めているのですが、たとえば
Bookテーブル ・ID :id(Primary Key):Int ・名称:name:String ・価格:price:Int Employeeテーブル ・ID :id(Primary Key):Int ・氏名:name:String ・年齢:age:Int
のような構成のテーブルがあるとしたとき、それぞれRealmObjectを継承したEntityクラスを実装するのですが、IDを1~自動採番する仕組みにしたいと考えています。
Realmにはそのような仕組みが標準ではないので、ネット情報等を参考に以下のようにロジックを組みました。
Java
1public class CreateNewID { 2 public static int getNewId(){ 3 int nextId = 1; 4 try (Realm realm = Realm.getDefaultInstance()) { 5 Number maxId = realm.where(Book.class).max("id"); 6 if(maxId != null) { 7 nextId = maxId.intValue() + 1; 8 } 9 } 10 return nextId; 11 } 12}
しかしこれだとBookクラスしか使えません。
Employeeテーブルでも同じメソッドを使えるようにするために、このメソッドに総称型を渡して、realm.where(T.getClass()).max("id");
みたいなことをすればよいのかと考えましたが、realm.where()
の引数にはRealmObjectしか渡せないようでした。
どのように改善すれば共通化できますでしょうか?
回答1件
あなたの回答
tips
プレビュー