JPA @ManyToOne具有不同的数据类型

时间:2014-07-21 14:46:44

标签: jpa sqldatatypes many-to-one

我有两个旧的数据库表,我需要使用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)。

那么我该怎么做才能加入他们呢?应忽略非数字值。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

VehicleNumber表中的

TOUR是一个数字,而另一个是CHAR。  首先,您需要匹配类型(最好不要试图破解标准)。

然后@Id将列名称设为@Column(precision=3)。所以它应该是:

public class Tour {
  @Id
  @Column(name = "Id")
  private BigDecimal id;
  ...
}

并为另一个表做同样的事情。 顺便说一句,我建议您使用Long作为主键,而不是BigDecimal,除非必须这样做。 但对于实体,您可以使用Long