具有不同数据类型的JPA@MANYTONE
我有两个旧的数据库表,需要与JPA一起使用具有不同数据类型的JPA@MANYTONE,jpa,sqldatatypes,many-to-one,Jpa,Sqldatatypes,Many To One,我有两个旧的数据库表,需要与JPA一起使用 TOUR VEHICLE ----------------------- --------------------- Id NUMBER(10) VehicleNumber CHAR(3) VehicleNumber NUMBER(3) LicensePlate CHAR(10) 在我的JPA实体中,我希望您使用从巡更到车辆的@manytone关系 车辆实体:
TOUR VEHICLE
----------------------- ---------------------
Id NUMBER(10) VehicleNumber CHAR(3)
VehicleNumber NUMBER(3) LicensePlate CHAR(10)
在我的JPA实体中,我希望您使用从巡更到车辆的@manytone关系
车辆实体:
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;
...
但这当然不起作用,因为一个车号是translatet到String,另一个是translatet到BigDecimalprecision=3
那我该怎么做才能加入他们呢?应忽略非数值
谢谢您的建议。巡更表中的车辆编号是一个数字,而另一个是字符。
首先,您需要更好地匹配类型,而不是试图破坏标准
然后为@Id输入列名,而不是@Columnprecision=3。因此,它应该是:
public class Tour {
@Id
@Column(name = "Id")
private BigDecimal id;
...
}
对另一张桌子也这样做。
哦,顺便说一下,我建议您使用Long作为主键,而不是BigDecimal,除非您必须这样做。
但是对于实体,您可以使用Long什么意思“不工作?”您使用的是什么JPA版本?我使用的是IBM WebSphere Application Server 8.5附带的OpenJPA 2.0,我正在尝试访问IBM I 7.1上的IBM DB2/400。有些表已经使用了20年或更久,如果不接触各种旧的RPG程序,我无法对它们进行任何更改。错误:org.apache.openjpa.persistence.ArgumentException:model.Tour.vehicle声明了一个与预期类型varchar不兼容的列。