Java 如何处理@AttributeOverrides上的@Type
假设您有一个Java 如何处理@AttributeOverrides上的@Type,java,hibernate,jpa,Java,Hibernate,Jpa,假设您有一个@embeddeble映射如下: @Embeddable public class Wheel { @Column(name = "COLOR") @Type(type = "my.package.ColorUserType") private Color theColor; } @Entity @Table(name = "CAR") public class Car { @Embedded @AttributeOverride( column = @
@embeddeble
映射如下:
@Embeddable
public class Wheel {
@Column(name = "COLOR")
@Type(type = "my.package.ColorUserType")
private Color theColor;
}
@Entity
@Table(name = "CAR")
public class Car {
@Embedded
@AttributeOverride(
column = @Column(name = "STEERING_WHEEL_COLOR")
name = "theColor"
)
private Wheel steeringWheel;
}
你试着这样使用它:
@Embeddable
public class Wheel {
@Column(name = "COLOR")
@Type(type = "my.package.ColorUserType")
private Color theColor;
}
@Entity
@Table(name = "CAR")
public class Car {
@Embedded
@AttributeOverride(
column = @Column(name = "STEERING_WHEEL_COLOR")
name = "theColor"
)
private Wheel steeringWheel;
}
当我这样做时,我会得到一个大而胖的org.hibernate.MappingException:无法确定启动时的类型:my.package.Color
那么,有没有一种方法可以覆盖该类型或确保它使用
@embeddeble
中定义的类型,因为当使用@AttributeOverride
时,它显然没有被保留?这看起来是无法做到的,因为它不是基本的
类型映射。资料来源:。在这个答案中写一个属性转换程序解决了我的问题