objectbox / objectbox/objectbox-java
Default values for new properties
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Java
- Star
- 4.6k
- Fork
- 311
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
Im using ObjectBox in a pet android project written in Kotlin.. I have a data class encoded as such (example):
@Entity data class Foo(var name:String, var description: String) {
constructor() : this("", "") // parameter-less constructor
@Id var id: Long = 0L
// other stuff
}
Database already existed on the device.. I added an additional property to the Foo class (not in the data constructor):
@Entity data class Foo(var name:String, var description: String) {
constructor() : this("", "") // parameter-less constructor
@Id var id: Long = 0L
var bar: String = ""
// other stuff
}
defaulted, non-null object bar.. however when pulling existing records from the stored box, that value bar appears to be null.. I would expect it to be a blank string (default for the parameter); is the violation of not-null guarantee coming from the Java interop?
I fixed the issue by nuking the database; afterwords the entity created and stored is not-null.. But this brings up any possible future updates that may violate this.
Is there a "database upgrade" method for updating already stored objects between versions, adding default values to new properties, or am I resigned to make anything added to an existing model be nullable (and handle it as such)?
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Issue cung cấp một entity Foo bằng Kotlin và mô tả các bản ghi hiện có trong cơ sở dữ liệu ObjectBox, nhưng không nêu tên tệp repository hoặc các bài kiểm thử. Hãy bắt đầu bằng cách tái hiện hành vi sau khi thêm bar vào Foo, sau đó kiểm tra quá trình migration của entity và các đường dẫn tải bản ghi hiện có. Công việc được xem là hoàn tất khi xác định được các thuộc tính mới không nullable nhận giá trị mặc định cho các bản ghi đã lưu như thế nào, kèm theo coverage hoặc tài liệu cho các lần nâng cấp trong tương lai.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- android, java, kotlin
- Lĩnh vực
- databases, mobile-dev
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100