我有两个旧的数据库表,我需要使用JPA。
TOUR VEHICLE
----------------------- ---------------------
Id NUMBER(10) VehicleNumber CHAR(3)
VehicleNumber NUMBER(3) LicensePlate CHAR(10)
在我的JPA实体中,我想要使用从TOUR到VEHICLE的@ManyToOne关系。
车辆实体:
public class Vehicle {
@Id
@Column(length=3)
private String VehicleNumber;
...
游览实体:
public class Tour {
@Id
@Column(precision=3)
private BigDecimal Id;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="VehicleNumber", referencedColumn="VehicleNumber")
private Vehicle vehicle;
...
但是这当然不起作用,因为一个车辆号码被翻译成String而另一个车辆号码被翻译成BigDecimal(精度= 3)。
那么我该怎么做才能加入他们呢?应忽略非数字值。
感谢您的任何建议。
答案 0 :(得分:0)
VehicleNumber
表中的 TOUR
是一个数字,而另一个是CHAR
。
首先,您需要匹配类型(最好不要试图破解标准)。
然后@Id
将列名称设为@Column(precision=3)
。所以它应该是:
public class Tour {
@Id
@Column(name = "Id")
private BigDecimal id;
...
}
并为另一个表做同样的事情。
顺便说一句,我建议您使用Long
作为主键,而不是BigDecimal
,除非必须这样做。
但对于实体,您可以使用Long