@Type 어노테이션의 type과 parameters 속성에 다음과 같이 설정해 줍니다.

 @Column(nullable = false)
 @Type(type = "net.openseed.core.persist.hibernate.usertype.GenericEnumUserType", parameters = { @Parameter(name = "genericEnumClass", value = "keesun.model.enumeration.KMessengerType") })

 public KMessengerType getM_type() {
  return m_type;
 }

여기서 @Type이랑 @Parameter를 알아봐야겠습니다.

@Type 에 대한 Hibernate Reference에는 이렇게 쓰여있습니다.
@org.hibernate.annotations.Type overrides the
default hibernate type used: this is generally not necessary since the
type is correctly inferred by Hibernate. Please refer to the Hibernate
reference guide for more informations on the Hibernate types.

기본 type을 재정의 하는데 사용되는 어노테이션이군요.

@Parameter에 대한 설명은 찾기가 조금 힘드네요. 레퍼런스를 보니까 @TypeDef라는 어노테이션 안에서 비슷하게 사용된 것을 볼 수 있었습니다.

HIA2판을 뒤져 봤습니다. 5.3.4 Creating a UserType 이라는 장부터 5.3.7 Mapping Enumeration에 걸쳐서 Hibernate에 있는 컬럼의 기본 타입이 아닌 새로운 타입으로 지정하고 싶을 때 위와 같은 방식을 사용한 것 같습니다.