@Convert on @Id field

我怕爱的太早我们不能终老 提交于 2019-12-07 02:50:45

问题


I'm trying to

@Id
@Column(name = "MY_ID_FIELD")
@Convert(converter = IdConverter.class)
private Long id;

IdConverter is:

@Converter
public class IdConverter implements AttributeConverter<Long, BigDecimal> {

    @Override
    public BigDecimal convertToDatabaseColumn(Long attribute) {
        return BigDecimal.valueOf(attribute);
    }

    @Override
    public Long convertToEntityAttribute(BigDecimal dbData) {
        return dbData.longValue();
    }
}

The converter will map BigDecimal, the attribute field type Hibernate expects given that in the sql server database the id column type is numeric, to Long.

I'm using Spring Data Jpa and my repository is using Long as I would expect to

@Repository
public interface CityRepository extends JpaRepository<City, Long> { }

Do you have any idea of why it is not working?


回答1:


@Id and @Convert could not be used together. Using @IdClass can fix this problem. You just need to move @Convert to the @IdClass.

@Entity
@IdClass(PK.class)
public class YourClass {
  @Id
  private Long id;
  ...
}


public class PK implements Serializable {
  @Column(name = "MY_ID_FIELD")
  @Convert(converter = IdConverter.class)
  private Long id;
}


来源:https://stackoverflow.com/questions/44069361/convert-on-id-field

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!