Skip to contentPackage: Converter
Converter
Coverage
1: /*
2: * JOPA
3: * Copyright (C) 2023 Czech Technical University in Prague
4: *
5: * This library is free software; you can redistribute it and/or
6: * modify it under the terms of the GNU Lesser General Public
7: * License as published by the Free Software Foundation; either
8: * version 3.0 of the License, or (at your option) any later version.
9: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library.
17: */
18: package cz.cvut.kbss.jopa.model.annotations;
19:
20: import java.lang.annotation.ElementType;
21: import java.lang.annotation.Retention;
22: import java.lang.annotation.RetentionPolicy;
23: import java.lang.annotation.Target;
24:
25: /**
26: * Specifies that the annotated class is a converter and defines its scope.
27: * <p>
28: * A converter class must be annotated with the Converter annotation. If the autoApply element is specified as true, the
29: * persistence provider must automatically apply the converter to all mapped attributes of the specified target type for
30: * all entities in the persistence unit.
31: * <p>
32: * Note that Id attributes, version attributes, relationship attributes, and attributes explicitly annotated as
33: * Enumerated or Temporal will not be converted.
34: * <p>
35: * Note that if autoApply is true, the Convert annotation may be used to override or disable auto-apply conversion on a
36: * per-attribute basis.
37: * <p>
38: * If autoApply is false, only those attributes of the target type for which the Convert annotation has been specified
39: * will be converted.
40: * <p>
41: * If there is more than one converter defined for the same target type, the Convert annotation should be used to
42: * explicitly specify which converter to use.
43: */
44: @Target(ElementType.TYPE)
45: @Retention(RetentionPolicy.RUNTIME)
46: public @interface Converter {
47:
48: /**
49: * Whether to apply the converter automatically.
50: */
51: boolean autoApply() default false;
52: }