mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-14 15:14:56 +00:00
more impressive converter example
This commit is contained in:
parent
4697630eb9
commit
e59ba209da
@ -591,15 +591,29 @@ For example, the following converter will be automatically applied to any attrib
|
|||||||
[source,java]
|
[source,java]
|
||||||
----
|
----
|
||||||
@Converter(autoApply = true)
|
@Converter(autoApply = true)
|
||||||
public class BitSetConverter implements AttributeConverter<BitSet,byte[]> {
|
public static class EnumSetConverter implements AttributeConverter<EnumSet<DayOfWeek>,Integer> {
|
||||||
@Override
|
@Override
|
||||||
public byte[] convertToDatabaseColumn(BitSet bitSet) {
|
public Integer convertToDatabaseColumn(EnumSet<DayOfWeek> enumSet) {
|
||||||
return bitSet.toByteArray();
|
int encoded = 0;
|
||||||
|
DayOfWeek[] values = DayOfWeek.values();
|
||||||
|
for (int i = 0; i<values.length; i++) {
|
||||||
|
if (enumSet.contains(values[i])) {
|
||||||
|
encoded |= 1<<i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return encoded;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BitSet convertToEntityAttribute(byte[] bytes) {
|
public EnumSet<DayOfWeek> convertToEntityAttribute(Integer encoded) {
|
||||||
return BitSet.valueOf(bytes);
|
EnumSet<DayOfWeek> set = EnumSet.noneOf(DayOfWeek.class);
|
||||||
|
DayOfWeek[] values = DayOfWeek.values();
|
||||||
|
for (int i = 0; i<values.length; i++) {
|
||||||
|
if (((1<<i) & encoded) != 0) {
|
||||||
|
set.add(values[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return set;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
Loading…
x
Reference in New Issue
Block a user