如何为@id创建属性转换器

时间:2017-03-21 13:55:26

标签: java hibernate jpa

在jpa(> = 2.1)中,如何为使用@Id注释的属性创建AttributeConverter?

不幸的是,似乎Hibernate不允许在以下代码中使用它: org.hibernate.cfg.annotations.SimpleValueBinder#applyAttributeConverter

if ( property.isAnnotationPresent( Id.class ) ) {
            LOG.debugf( "Skipping AttributeConverter checks for Id attribute [%s]", property.getName() );
            return;
}

有没有办法绕过这个?

2 个答案:

答案 0 :(得分:1)

刚刚找到了一个很好的解决方法,因为我遇到了同样的问题,因为Hibernate一直在使用@Convert序列化对象,除了...对于我在@Embeddable中使用它的那些

  @Embeddable
  public static class Key {
    @Column(name = "ID", nullable = false)
    @Convert(converter = MyObjectConverter.class)
    private MyObject id;
//getter/setter
  }

  @EmbeddedId
  private Key key;

答案 1 :(得分:0)

我发现您可以将UUID用作ID,然后允许使用转换器 Persisting UUID in PostgreSQL using JPA 奇怪的是您不能使用任何自定义Converter