ObjectBox 不会在实体中生成 getter 和构造函数
ObjectBox doesn't generate getters and constructors within entities
我正在尝试使用此页面开始使用 OB http://objectbox.io/documentation/introduction/
我在 Android Studio 2.3.3
中创建了一个新项目
我的 Gradle 个文件:
根目录:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
maven { url "http://objectbox.net/beta-repo/" }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath "io.objectbox:objectbox-gradle-plugin:1.0.1"
}
}
allprojects {
repositories {
jcenter()
maven { url "http://objectbox.net/beta-repo/" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
APP:
apply plugin: 'com.android.application'
apply plugin: 'io.objectbox'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.obox"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile "io.objectbox:objectbox-android:1.0.1"
annotationProcessor "io.objectbox:objectbox-processor:1.0.1"
}
在 APP-gradle 文件中有和没有 2 个较低的行都不起作用。
我的实体class:
package com.example.obox;
import io.objectbox.annotation.Entity;
import io.objectbox.annotation.Id;
@Entity
public class MyModel {
@Id
private long id;
private String content;
}
没有添加生成的代码。所以我在尝试制作项目时遇到错误。
.../MyModelCursor.java
Error:(45, 32) error: cannot find symbol method getContent()
Error:(48, 57) error: cannot find symbol method getId()
Error:(56, 15) error: cannot find symbol method setId(long)
.../MyModel_.java
Error:(91, 26) error: cannot find symbol method getId()
ObjectBox 不会将代码生成到您的源文件中(与 greenDAO 不同)。所以你有两个选择:
- 通过删除
private
将字段包设为私有
- 提供标准 getter(您的 IDE 可以轻松生成它们)
我有一条类似的错误消息,可能是由于 Date
字段以 is
开始,这可能是关键字或其他东西,并且只允许 Boolean
s(不确定关于这一点,只是我的猜测)。
将isProblemSolvedUpdatedAt: Date? = Date()
更改为problemSolvedUpdatedAt: Date? = Date
后,错误消失了。
也许对某人有帮助。
编辑:我将 ObjectBox 与 Kotlin 结合使用。
如果使用 Kotlin,则只需将 data
/entity
class 成员声明为 var
而不是 val
。
示例:
@Entity
data class MyObject(var string: String, @Id var id: Long = 0)
使用 kotlin 使这变得超级简单,因为它默认生成 getter/setter。
我正在尝试使用此页面开始使用 OB http://objectbox.io/documentation/introduction/
我在 Android Studio 2.3.3
中创建了一个新项目我的 Gradle 个文件:
根目录:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
maven { url "http://objectbox.net/beta-repo/" }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath "io.objectbox:objectbox-gradle-plugin:1.0.1"
}
}
allprojects {
repositories {
jcenter()
maven { url "http://objectbox.net/beta-repo/" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
APP:
apply plugin: 'com.android.application'
apply plugin: 'io.objectbox'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.obox"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile "io.objectbox:objectbox-android:1.0.1"
annotationProcessor "io.objectbox:objectbox-processor:1.0.1"
}
在 APP-gradle 文件中有和没有 2 个较低的行都不起作用。
我的实体class:
package com.example.obox;
import io.objectbox.annotation.Entity;
import io.objectbox.annotation.Id;
@Entity
public class MyModel {
@Id
private long id;
private String content;
}
没有添加生成的代码。所以我在尝试制作项目时遇到错误。
.../MyModelCursor.java
Error:(45, 32) error: cannot find symbol method getContent()
Error:(48, 57) error: cannot find symbol method getId()
Error:(56, 15) error: cannot find symbol method setId(long)
.../MyModel_.java
Error:(91, 26) error: cannot find symbol method getId()
ObjectBox 不会将代码生成到您的源文件中(与 greenDAO 不同)。所以你有两个选择:
- 通过删除
private
将字段包设为私有
- 提供标准 getter(您的 IDE 可以轻松生成它们)
我有一条类似的错误消息,可能是由于 Date
字段以 is
开始,这可能是关键字或其他东西,并且只允许 Boolean
s(不确定关于这一点,只是我的猜测)。
将isProblemSolvedUpdatedAt: Date? = Date()
更改为problemSolvedUpdatedAt: Date? = Date
后,错误消失了。
也许对某人有帮助。
编辑:我将 ObjectBox 与 Kotlin 结合使用。
如果使用 Kotlin,则只需将 data
/entity
class 成员声明为 var
而不是 val
。
示例:
@Entity
data class MyObject(var string: String, @Id var id: Long = 0)
使用 kotlin 使这变得超级简单,因为它默认生成 getter/setter。