簡體   English   中英

JPA / Hibernate:在復雜類上使用AttributeConverter時創建UserType是否明顯?

[英]JPA/Hibernate: is it obvious to create UserType when using AttributeConverter on complex class?

我想繪制任意POJO類屬性的StringAttributeConverter<SomeClass, String>但是我得到這個:

警告:找不到所請求的Java類[SomeClass]的匹配類型描述符; 使用后備

這是否意味着AttributeConverter是不夠的,我需要為每個復雜類編寫一個自定義UserType ,以便能夠將其轉換為String並返回?

另一種解決方案需要@Embeddable 這里更合適嗎?

@Entity
public class SomePersistentClass {
    @Id
    int id;

    @Convert(converter = SomeClassConverter.class)
    public SomeClass attribute;

    //...
}

public class SomeClass {
    //...
}

舊問題,但從Hibernate 5.2.7(2017年1月24日)開始,此警告更改為:

WARN org.hibernate.type.descriptor.java.JavaTypeDescriptorRegistry - HHH000481:遇到Java類型[類SomeClass],我們找不到JavaTypeDescriptor,但似乎沒有實現equals和/或hashCode。 執行涉及此Java類型的相等/臟檢查時,這可能會導致嚴重的性能問題。 考慮注冊自定義JavaTypeDescriptor或至少實現equals / hashCode。 所以,有這些解決方案:

要解決這個問題,只需確保你的類型實現equals和hashcode,並使用Immutable.class注釋它,以防它是不可變的。

請參閱: JavaTypeDescriptorRegistry - 找不到所請求的Java類的匹配類型描述符

定義pojo

  1. @Named

  2. 實現轉換器

  3. 重寫getAsObject和getAsString方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM