[英]Hibernate - createNativeQuery with “non-entity class” result
[英]Hibernate: Entity property from non-entity class
所以我有一个名为 Appointment 的休眠实体,在这个实体中我有一个 AppointNumber 属性,它本身包含一个数字属性,它是一个字符串。 当我坚持我的约会时,我需要约会号码。 前几天我让它与 @Embedded 和 @Embeddable 一起工作,但这会创建一个我不能拥有的连接表。 我尝试了许多其他解决方案来尝试让它在没有连接表的情况下工作,但我无法弄清楚。 (我收到很多 ava.lang.IllegalStateException) 谁能帮忙? 谢谢!
@Entity(name = "appointments")
public class Appointment {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@OneToOne(mappedBy = "number")
@Fetch(value = FetchMode.SELECT)
private AppointmentNumber appointmentNumber;
AppointmentNumber,在约会中使用但不应是实体
public class AppointmentNumber {
@OneToOne
@JoinColumn(name = "appointmentNumber", unique = true, nullable = false)
private String number;
你可以这样做:
@Entity(name = "appointments")
public class Appointment {
///....
@Convert(converter = AppointmentNumberConverter.class)
private AppointmentNumber appointmentNumber;
///....
}
@Converter
public class AppointmentNumberConverter implements
AttributeConverter<PersonName, String> {
@Override
public String convertToDatabaseColumn(AppointmentNumber appointmentNumber) {
if (appointmentNumber == null) {
return null;
}
return appointmentNumber.getNumber();
}
@Override
public AppointmentNumber convertToEntityAttribute(String appointmentNumber) {
if (appointmentNumber == null) {
return null;
}
AppointmentNumber result = new AppointmentNumber();
result.setNumber(appointmentNumber);
return result;
}
}
查看 JPA 转换器文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.