Hibernate Annotations are so great, especially together with the Hibernate Tools that allows to generate the whole database (sql table definitions) from your annotated beans.
Right now I mapped the first time a
java.util.Map
with some enum
type as key and a primitive type as value (java.lang.String
).The mapping looks like the following:
public class Test { @CollectionOfElements @JoinTable(name = "my_table") @Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN) @Enumerated(value = EnumType.STRING) @org.hibernate.annotations.MapKey(columns = {@Column(name = "my_enum")}) @Column(name = "my_value", length = 4000) public Map getMappedValues() { return _mappedValues; } }
What I was not able to do was to define the type of the value (String) as hibernate type
text
. This gave the correct table/column definition at build time (hibernate tools), but a ClassCastException
at runtime, saying that MyEnumType
is not compatible to hibernate’s type text
. So I used the length
of the @Column
annotation as a temporary workaround - I’ll dig into this now or later
No comments:
Post a Comment