Skip to content

Commit b118f42

Browse files
Merge branch '25-date-nano' into 'dev'
ID_COMPANION flag, DateNano type, @type annotation See merge request objectbox/objectbox-java!54
2 parents 3e536a0 + da11298 commit b118f42

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.objectbox.annotation;
2+
3+
/**
4+
* Use with {@link Type @Type} to override how a property value is stored and interpreted in the database.
5+
*/
6+
public enum DatabaseType {
7+
8+
/**
9+
* Use with 64-bit long properties to store them as high precision time
10+
* representing nanoseconds since 1970-01-01 (unix epoch).
11+
* <p>
12+
* By default, a 64-bit long value is interpreted as time in milliseconds (a Date).
13+
*/
14+
DateNano
15+
16+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright 2019 ObjectBox Ltd. All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.objectbox.annotation;
18+
19+
import java.lang.annotation.ElementType;
20+
import java.lang.annotation.Retention;
21+
import java.lang.annotation.RetentionPolicy;
22+
import java.lang.annotation.Target;
23+
24+
/**
25+
* Use on a property to override how its value is stored and interpreted in the database.
26+
* <p>
27+
* For example to change a long to be interpreted as nanoseconds instead of milliseconds:
28+
* <pre>
29+
* &#064;Type(DatabaseType.DateNano)
30+
* public long timeInNanos;
31+
* </pre>
32+
*/
33+
@Retention(RetentionPolicy.CLASS)
34+
@Target({ElementType.FIELD})
35+
public @interface Type {
36+
37+
DatabaseType value();
38+
39+
}

0 commit comments

Comments
 (0)