标签: activeandroid

活跃的Android多对多关系

虽然这个问题与ActiveAndroid有关,但任何熟悉ORM的人都可以回答这个问题.

ActiveAndroid似乎没有为您提供开箱即用的多对多关系的方法.我在寻找解决方案时发现的是这个GitHub问题:https://github.com/pardom/ActiveAndroid/issues/46

我知道它是显式创建关系表,但我不明白以下部分应该如何做有用的事情:

public List<Foo> foos() {
    return getMany(Foo.class, "FooBar");
}
public List<Bar> bars() {
    return getMany(Bar.class, "FooBar");
}
Run Code Online (Sandbox Code Playgroud)

这将导致类似的查询SELECT * FROM Foo where Foo.FooBar = FooBar.Id;.这最多只返回Foo一行.我错过了什么吗?

你不需要涉及连接的查询吗?

sql android activeandroid

8
推荐指数
1
解决办法
3401
查看次数

如何使用Active Android与内存数据库一起使用Robolectric进行单元测试?

正如标题所说.我知道robolectric提供的内存数据库有限.有没有办法在Active Android中使用它?在默认配置下,似乎在运行所有测试后清除数据库,但不是每个测试都清除.

android unit-testing robolectric activeandroid

8
推荐指数
1
解决办法
1005
查看次数

在Gingerbread上运行时,ActiveAndroid应用程序会自动关闭

我有一个使用Android Studio和Gradle开发的应用程序.该应用程序使用ActiveAndroid.该应用程序在3.0及以上完美运行.当在Gingerbread设备上运行时,它只会打开,白屏,然后自动关闭.运行应用程序时,logcat中给出的唯一线索如下:

D/dalvikvm? GC_CONCURRENT freed 195K, 41% free 3988K/6663K, external 1625K/2137K, paused 0ms+0ms
I/dalvikvm? Failed resolving Landroid/support/v4/media/TransportMediatorJellybeanMR2$1; interface 1088 'Landroid/view/ViewTreeObserver$OnWindowAttachListener;'
W/dalvikvm? Link of class 'Landroid/support/v4/media/TransportMediatorJellybeanMR2$1;' failed
I/dalvikvm? Failed resolving Landroid/support/v4/media/TransportMediatorJellybeanMR2$2; interface 1089 'Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;'
W/dalvikvm? Link of class 'Landroid/support/v4/media/TransportMediatorJellybeanMR2$2;' failed
I/dalvikvm? Failed resolving Landroid/support/v4/media/TransportMediatorJellybeanMR2; interface 180 'Landroid/media/RemoteControlClient$OnGetPlaybackPositionListener;'
W/dalvikvm? Link of class 'Landroid/support/v4/media/TransportMediatorJellybeanMR2;' failed
I/dalvikvm? Failed resolving Landroid/support/v4/os/ParcelableCompatCreatorHoneycombMR2; interface 224 'Landroid/os/Parcelable$ClassLoaderCreator;'
W/dalvikvm? Link of class 'Landroid/support/v4/os/ParcelableCompatCreatorHoneycombMR2;' failed
W/dalvikvm? Unable to resolve superclass of Landroid/support/v4/print/PrintHelperKitkat$1; (241)
W/dalvikvm? Link of class 'Landroid/support/v4/print/PrintHelperKitkat$1;' failed
I/dalvikvm? …
Run Code Online (Sandbox Code Playgroud)

android android-2.3-gingerbread activeandroid

8
推荐指数
1
解决办法
1708
查看次数

如何在添加新列后使用activeandroid更新表

谢谢你的阅读和帮助:)

我正在使用ActiveAndroid 3.0 - Android 2.2 - 在我的应用程序中,我有一个名为"用户"的模型.最初我只使用(id,name,passcode)列/属性创建了模型,我在模拟器上运行了应用程序,并且它工作正常.

@Table(name = "user")
public class User extends Model {
  @Column (name = "name")  
  public String name;
  @Column (name = "pass_code")
  public String passCode;
}
Run Code Online (Sandbox Code Playgroud)

然后我添加了一个新的列/属性 - profileImage.我在模拟器上运行应用程序,我得到SQLite列profileImage不存在错误.

@Table(name = "user")
public class User extends Model {
  @Column (name = "name")  
  public String name;
  @Column (name = "pass_code")
  public String passCode;
  @Column (name = "profile_image")
  public String profileImage;
}
Run Code Online (Sandbox Code Playgroud)

我尝试更改ActiveAndroid数据库名称并更新清单文件中的数据库版本属性.

<meta-data android:name="AA_DB_NAME" android:value="my_app.db" />
<meta-data android:name="AA_DB_VERSION" android:value="2" />
Run Code Online (Sandbox Code Playgroud)

但我不断得到列不存在错误.

ERROR   AndroidRuntime  Caused by: …
Run Code Online (Sandbox Code Playgroud)

database android activeandroid android-sqlite

7
推荐指数
1
解决办法
8581
查看次数

如何在Activeandroid中禁用模型扫描

我想使用AA_MODEL标记在AndroidManifest.xml文件中定义我的模型类并禁用自动搜索.因为当前我在应用程序启动时遇到错误类似于:

Couldn't create class.
    java.lang.ClassNotFoundException: android.support.v4.print.PrintHelperKitkat$1
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:204)
            at com.activeandroid.ModelInfo.scanForModelClasses(Unknown Source)
            at com.activeandroid.ModelInfo.scanForModel(Unknown Source)
            at com.activeandroid.ModelInfo.<init>(Unknown Source)
            at com.activeandroid.Cache.initialize(Unknown Source)
            at com.activeandroid.ActiveAndroid.initialize(Unknown Source)
            at com.activeandroid.ActiveAndroid.initialize(Unknown Source)
            at com.company.myapp.app.MyAppApplication.onCreate(Unknown Source)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4684)
            at android.app.ActivityThread.access$1400(ActivityThread.java:159)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1376)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:176)
            at android.app.ActivityThread.main(ActivityThread.java:5419)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
            at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

怎么做得好?你能告诉我一个定义明确的AA_MODEL标签的例子吗?

database android activeandroid

7
推荐指数
2
解决办法
4653
查看次数

ActiveAndroid多对多的关系

我目前正在使用ActiveAndroid,过去几个小时一直试图让多对多的关系工作,但是我无法让它工作.我希望你能帮助我:

我有模特"学生"和"课程",学生可以有很多课程,课程有很多学生.基本上这就是我在模型"StudentCourse"中所拥有的:

 @Column(name = COURSE)
 public Course course;

 @Column(name = STUDENT)
 public Student student;

 public StudentCourse(Student student, Course course) {
 super();
 this.student = student;
 this.course = course;
 }
//
 public StudentCourse(){ }

 public List<Course> courses(){
 return getMany(Course.class, "StudentCourse");
 }
 public List<Student> students(){
 return getMany(Student.class, "StudentCourse");
 }
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试做的是"课程X中的所有学生",使用以下代码:

((Student) new Select().from(StudentCourse.class).where("course = ?",selectedCourse.getId()).executeSingle()).students();
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

java.lang.ClassCastException:com.papinotas.models.StudentCourse无法强制转换为com.papinotas.models.Student

如果我将(学生)的演员表更改为(StudentCourse),我会收到以下错误:

android.database.sqlite.SQLiteException:没有这样的专栏:students.StudentCourse(代码1):,同时编译:SELECT*FROM学生WHERE students.StudentCourse = 1

我的主要目标是希望在一个查询中实现这一点.任何帮助将不胜感激.提前致谢!

PS:我已经看过几乎所有我能找到的东西:活跃的Android多对多关系https://github.com/pardom/ActiveAndroid/issues/46

java sql sqlite android activeandroid

7
推荐指数
1
解决办法
4359
查看次数

使用Robolectric测试ActiveAndroid

我可以做些什么来在Robolectric上对ActiveAndroid的ContentProvider进行一些测试?这个简单的测试失败了

该模型:

@Table(name = "Things")
    public class Thing extends Model {
    public Thing() {
        super();
    }
}
Run Code Online (Sandbox Code Playgroud)

考试:

@RunWith(RobolectricTestRunner.class)
public class ContentProviderTest {

  @Test
  public void itShouldQuery() throws Exception {
    new Thing().save();
    ContentResolver cr = new MainActivity().getContentResolver();
    assertNotNull(
        cr.query(Uri.parse("content://org.example/things"), 
                   null, null, null, null));
  }
}
Run Code Online (Sandbox Code Playgroud)

生成的堆栈跟踪:

java.lang.NullPointerException: null
    at com.activeandroid.Cache.getTableInfo(Unknown Source)
    at com.activeandroid.Model.<init>(Unknown Source)
    at org.example.Thing.<init>(Thing.java:9)
    at org.example.ProviderTest.itShouldQuery(ProviderTest.java:25)
Run Code Online (Sandbox Code Playgroud)

应用程序上下文应该没问题.默认情况下,Robolectric创建清单中显示的应用程序,在本例中为com.activeandroid.Application.

所以,我很困惑为什么Cache中的tableInfo没有被初始化.正常的应用程序执行正常.

android robolectric activeandroid

6
推荐指数
1
解决办法
1721
查看次数

ActiveAndroid带有"in"子句

我想知道是否可能以及如何使用"IN"子句在ActiveAndroid中执行where子句.

例如,我想做这样的事情:

new Select().from(Table).where("id in?",list).execute()

activeandroid

6
推荐指数
1
解决办法
3205
查看次数

如何清除ActiveAndroid中的所有表?

我的ActiveAndroid数据库中有大约20-30个表.当我按下logoutButton我要清除所有表格.我怎么能这样做ActiveAndroid

 public void logOut() {
     //clear all tables
 }
Run Code Online (Sandbox Code Playgroud)

android activeandroid

6
推荐指数
2
解决办法
3505
查看次数

活跃的Android很容易受到SQL注入。有什么已知的解决方案吗?

Android 应用程序已使用 ActiveAndroid 开发

public static List<ModelNames> search(String pattern) {
    return new Select().from(ModelNames.class)
            .where("title LIKE '%" + pattern + "%' or content LIKE '%" + pattern + "%'")
            .orderBy("title")
            .execute();
}
Run Code Online (Sandbox Code Playgroud)

现在很容易出现 SQL 注入。

有没有人遇到过类似的问题并找到了解决方案,或者有人可以提供相同的解决方案吗?

在github上发现了一个问题,但无法得到正确的解决方案。

sqlite android sql-injection activeandroid

5
推荐指数
1
解决办法
207
查看次数