Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否支持成员变量为其他对象 #16

Closed
msdx opened this issue Jan 6, 2016 · 6 comments
Closed

是否支持成员变量为其他对象 #16

msdx opened this issue Jan 6, 2016 · 6 comments

Comments

@msdx
Copy link

msdx commented Jan 6, 2016

插入如下对象时报空指针异常:

public class Province extends Area implements Parcelable {

    @JSONField(name = "cities")
    public ArrayList<City> cities;
    //...
}

其中City也继承自Area:

public class City extends Area implements Parcelable {

    @JSONField(name = "areas")
    public ArrayList<Area> areas;
    //...
}

Area的结构如下:

public class Area implements Parcelable {
    @JSONField(name = "name")
    public String name;
    @JSONField(name = "code")
    public int code;
    @JSONField(name = "level")
    public final int level;
    //...
}

异常信息如下:

 java.lang.NullPointerException
     at com.litesuits.orm.db.assit.SQLBuilder.buildInsertSql(SQLBuilder.java:270)
     at com.litesuits.orm.db.assit.SQLBuilder.buildReplaceAllSql(SQLBuilder.java:236)
     at com.litesuits.orm.db.impl.SingleSQLiteImpl.save(SingleSQLiteImpl.java:74)
     at com.parkingwang.app.support.CacheHelper.saveToDbCache_aroundBody6(CacheHelper.java:97)
     at com.parkingwang.app.support.CacheHelper$AjcClosure7.run(CacheHelper.java:1)
     at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
     at hugo.weaving.internal.Hugo.logAndExecute(Hugo.java:30)
     at com.parkingwang.app.support.CacheHelper.saveToDbCache(CacheHelper.java:97)
     at com.parkingwang.app.account.vehicle.VehicleCallback.onUISuccess(VehicleCallback.java:37)
     at com.parkingwang.api.NotifyCallback.onUIResponse(NotifyCallback.java:79)
     at com.parkingwang.api.NotifyCallback.onUIResponse(NotifyCallback.java:35)
     at com.github.yoojia.fast.http.ParsableHttpCallback$1.handleMessage(ParsableHttpCallback.java:29)
     at android.os.Handler.dispatchMessage(Handler.java:106)
     at android.os.Looper.loop(Looper.java:193)
     at android.app.ActivityThread.main(ActivityThread.java:5551)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:515)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730)
     at dalvik.system.NativeStart.main(Native Method)
@litesuits
Copy link
Owner

你的entity对象,没有注解标注主键,也没有命名为_id或者id的字段。所以无法找到主键。添加一个自增的主键就好了,见sample案例

@msdx
Copy link
Author

msdx commented Jan 6, 2016

@litesuits 其他对象也是没有加id但是没有报这个错。
我刚才加了id:

public long id;

报错如下:

 java.lang.NullPointerException
     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:43)
     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
     at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1032)
     at com.litesuits.orm.db.assit.SQLStatement.execInsertCollectionWithMapping(SQLStatement.java:143)
     at com.litesuits.orm.db.assit.SQLStatement.execInsertCollection(SQLStatement.java:132)
     at com.litesuits.orm.db.impl.SingleSQLiteImpl.save(SingleSQLiteImpl.java:76)
     at com.parkingwang.app.support.CacheHelper.saveToDbCache_aroundBody6(CacheHelper.java:97)
     at com.parkingwang.app.support.CacheHelper$AjcClosure7.run(CacheHelper.java:1)
     at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
     at hugo.weaving.internal.Hugo.logAndExecute(Hugo.java:30)
     at com.parkingwang.app.support.CacheHelper.saveToDbCache(CacheHelper.java:97)
     at com.parkingwang.app.account.vehicle.VehicleCallback.onUISuccess(VehicleCallback.java:37)
     at com.parkingwang.app.account.vehicle.VehicleListActivity$VehicleNumberListFragment$3.onUISuccess(VehicleListActivity.java:89)
     at com.parkingwang.api.NotifyCallback.onUIResponse(NotifyCallback.java:79)
     at com.parkingwang.api.NotifyCallback.onUIResponse(NotifyCallback.java:35)
     at com.github.yoojia.fast.http.ParsableHttpCallback$1.handleMessage(ParsableHttpCallback.java:29)
     at android.os.Handler.dispatchMessage(Handler.java:106)
     at android.os.Looper.loop(Looper.java:193)
     at android.app.ActivityThread.main(ActivityThread.java:5551)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:515)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:730)
     at dalvik.system.NativeStart.main(Native Method)

@litesuits
Copy link
Owner

手机上删掉App,重新run

@msdx
Copy link
Author

msdx commented Jan 6, 2016

试过了,一样的。

@litesuits
Copy link
Owner

竟有这样的事情。

  1. 确认是最新的jar包,应该是1.7.x版。
  2. 给id加主键注解
    @PrimaryKey(AssignType.AUTO_INCREMENT)
    public long id;
  3. 再贴一下你的实体类看一下

@msdx
Copy link
Author

msdx commented Jan 6, 2016

用的是1.7.0。
实体类的所有成员变量 就是上面的了,其他的是实现Parcelable的内容加上带参及不带参的构造方法。
按照你的第2个提供,我在父类Area中加上id,还是一样的异常。
此问题我还没解决,是否应该重新打开issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants