objectbox / objectbox-java

Android Database - first and fast, lightweight on-device vector database
https://objectbox.io
Apache License 2.0
4.38k stars 302 forks source link

Allow specifying custom type converters per table or globally too #899

Open ridcully99 opened 4 years ago

ridcully99 commented 4 years ago

Currently, to convert a custom type, we have to annotate each field of that type individually with @Convert. This is very inconvenientt, because if you have a custom type, e.g. joda.time.DateTime you'll always want to convert it, so it would be much cleaner and less error-prone if we could define custom type converters per table or for the whole database too, like Room does it with TypeConverters.

Describe the solution you'd like For a per-entity definition of converters, one could extend the @Entity annotation something like this:

@Entity(converters={@Convert(...), @Convert(...),...}
public class User ...

For defining converters globally, the ObjectBox builder could be extended.

Describe alternatives you've considered Currently, the only alternative is to add @Convert to each and every field.

Additional context As said above, you can have a look at Room's @TypeConverter annotation that can be applied to METHOD, PARAMETER, TYPE and FIELD.

greenrobot-team commented 4 years ago

Thanks! Please thumbs up if you would like to see this feature in ObjectBox.