# Get generic attribute type from DynamicParameterizedType#setParameterValues

**URL:** <https://discourse.hibernate.org/t/get-generic-attribute-type-from-dynamicparameterizedtype-setparametervalues/10361>\
**Category:** Hibernate ORM\
**Created:** [September 19, 2024, 4:15pm UTC](https://discourse.hibernate.org/t/get-generic-attribute-type-from-dynamicparameterizedtype-setparametervalues/10361 "2024-09-19T16:15:41Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jgremmen](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jgremmen/32/3486_2.png) [@jgremmen](https://discourse.hibernate.org/u/jgremmen)\
**Post date:** [September 19, 2024, 4:15pm UTC](https://discourse.hibernate.org/t/get-generic-attribute-type-from-dynamicparameterizedtype-setparametervalues/10361/1 "2024-09-19T16:15:41Z")

</div>

In Hibernate 5.6 I found a dirty way to get the annotated element to which the `@Type` was applied by taking a deep dive into the properties provided by `DynamicParameterizedType#setParameterValues(Properties parameters)` :

```auto
Method tam = JavaXMember.class.getSuperclass().getDeclaredMethod("toAnnotatedElement");
tam.setAccessible(true);
AnnotatedElement field = tam.invoke(properties.get(XPROPERTY));

```

I then would be able to get the generic type of the attribute by doing something like this:

```auto
Type attributeType = ((Field)field).getGenericType();

```

In Hibernate 6.6, due to modularization, I don’t have access to JavaXMember anymore.

Eg. I want to get hands on the generic type representing `EnumSet<Name>`.

```auto
@Type(MyDynamicParameterizedType.class)
@Column(nullable = false)
protected EnumSet<Name> names;

```

Can someone provide me a solution on how to get the `java.lang.reflect.Type` of the entity attribute (`names` in the example) that is annotated with a dynamic parameterized `@Type(...)` implementation?

---

<div class="post-metadata">

**Author:** ![beikov](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/beikov/32/258_2.png) [@beikov](https://discourse.hibernate.org/u/beikov)\
**Post date:** [September 20, 2024, 7:47am UTC](https://discourse.hibernate.org/t/get-generic-attribute-type-from-dynamicparameterizedtype-setparametervalues/10361/2 "2024-09-20T07:47:01Z")

</div>

You can implement a custom `JavaType` for `EnumSet` which will receive a callback `JavaType#createJavaType` to create a parameterized `JavaType`. That’s how you get generics information into the `JavaType`.

---

<div class="post-metadata">

**Author:** ![jgremmen](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/jgremmen/32/3486_2.png) [@jgremmen](https://discourse.hibernate.org/u/jgremmen)\
**Post date:** [September 20, 2024, 8:52am UTC](https://discourse.hibernate.org/t/get-generic-attribute-type-from-dynamicparameterizedtype-setparametervalues/10361/3 "2024-09-20T08:52:02Z")

</div>

Thank you, that looks a lot better than my reflection juggling.

One question though. Is it possible to create a `JavaType` that supports something similar to `CompositeUserType` ?

---

<div class="post-metadata">

**Author:** ![beikov](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/beikov/32/258_2.png) [@beikov](https://discourse.hibernate.org/u/beikov)\
**Post date:** [September 20, 2024, 9:00am UTC](https://discourse.hibernate.org/t/get-generic-attribute-type-from-dynamicparameterizedtype-setparametervalues/10361/4 "2024-09-20T09:00:01Z")

</div>

I don’t think so, no.
