gpt4 book ai didi

Java EE - [class ] 作为关系属性中的目标实体

转载 作者:行者123 更新时间:2023-11-30 07:48:10 26 4
gpt4 key购买 nike

我正在开发一个具有持久性的 Java EE 应用程序。

我的Car类有一些Reservation,并且Reservation类扩展了Quote类。

出于某种原因,Reservation 不是实体类。我的猜测是继承有问题,但我似乎无法弄清楚。

汽车看起来像这样:

@Entity
public class Car {

@Id
private int id;

@OneToOne(cascade=PERSIST, mappedBy="CarType")
private CarType type;

@OneToMany(cascade=REMOVE, mappedBy="Quote")
private Set<Reservation> reservations;

public Car() {}

.
.
.

public boolean equals(Object otherObject) {
...
}

public int hashCode() {
...
}

预订看起来像这样

@Entity
@Table(name = "Reservation")
public class Reservation extends Quote {

@Id
@GeneratedValue(strategy=AUTO)
@Column(name="reservationId")
private int reservationId;

private int carId;

public Reservation() {}

public Reservation(Quote quote, int carId) {
super(quote.getCarRenter(), quote.getStartDate(), quote.getEndDate(),
quote.getRentalCompany(), quote.getCarType(), quote.getRentalPrice());
this.carId = carId;
}

.
.
.

public boolean equals(Object otherObject) {
...

}

public int hashCode() {
...
}
}

引用看起来像这样:

@MappedSuperclass
public class Quote implements Serializable {

@Id
@GeneratedValue(strategy=AUTO)
@Column(name="quoteId")
private int quoteId;

@Temporal(DATE)
private Date startDate;
@Temporal(DATE)
private Date endDate;
private String carRenter;
private String rentalCompany;
private String carType;
private double rentalPrice;

public Quote() {}

public Quote(String carRenter, Date start, Date end, String rentalCompany, String carType, double rentalPrice) {
...
}

.
.
.

@Override
public int hashCode() {
...
}

@Override
public boolean equals(Object obj) {
...
}
}

为什么 Reservation 不是正确的实体类?

最佳答案

实体 Reservation 必须删除 @id,因为女儿从父类(super class)继承它

指定一个类,其映射信息应用于从它继承的实体。映射的父类(super class)没有为其定义单独的表。

关于Java EE - [class <ClassName] 使用非实体 [class <ClassName>] 作为关系属性中的目标实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33657504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com