我在试着
@Id
@Column(name = "MY_ID_FIELD")
@Convert(converter = IdConverter.class)
private Long id;IdConverter是:
@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();
}
}转换器将把BigDecimal ( Hibernate期望的属性字段类型)映射到Long (假定sql server数据库中的id列类型是numeric )。
我使用的是Spring Data Jpa,而我的存储库使用的时间也和我预期的一样长
@Repository
public interface CityRepository extends JpaRepository<City, Long> { }你知道它为什么不工作吗?
发布于 2017-09-11 12:08:06
@Id和@Convert不能一起使用。使用@IdClass可以解决此问题。您只需要将@Convert移到@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;
}发布于 2020-04-17 03:11:39
如果其他人遇到与我相同的问题,除了@Converter之外,您还必须在@IdClass上使用@Column注释才能使其正常工作(而不是依赖于命名策略)。
// doesn't work
public class PK implements Serializable {
@Convert(converter = IdConverter.class)
private Long id;
}// works
public class PK implements Serializable {
@Column(name = "ID")
@Convert(converter = IdConverter.class)
private Long id;
}https://stackoverflow.com/questions/44069361
复制相似问题