JPA:从另一个 table 加载值列表
JPA: Load list of values from another table
我有 2 tables vehicle
和 vehicle_image
。车辆table包含车辆的所有主数据,vehicle_imagetable包含图像的元信息和图像的Base64编码字符串。在车辆上可能有 0 个或更多图像。
现在,当我查询车辆对象时,我希望该对象包含来自 vehicle_image table 的信息。
我是 JPA 的新手,我能找到的示例似乎总是从另一个值中读取一个值 table,而不是列表。
向包含图像数据的车辆对象添加属性的最简单方法是什么?
@Entity
@XmlRootElement(name = "vehicle")
public class Vehicle {
@Id
private String vin;
private String commission;
@Column(name="swiss_type_number")
private String swissTypeNumber;
@Column(name="sale_type")
private String saleType;
@Column(name="exterior_color")
private String exteriorColor;
@Column(name="interior_color")
private String interiorColor;
private String remarks;
@Column(name="additional_title")
private String additionalTitle;
@Column(name="added_value_description")
private String addedValueDescription;
@Column(name="first_registration")
private String firstRegistration;
private String guaranty;
@Column(name="last_inspection")
private String lastInspection;
private int dealer;
private int mileage;
private int price;
private int seats;
@Column(name="model_year")
private int modelYear;
@Column(name="car_damaged_in_accident")
private boolean carDamagedInAccident;
private boolean imported;
// List of images
List<VehicleImage> vehicleImages; // Something like this would be nice
}
你这里有一个one-to-may关系,你可以使用:
@OneToMany
List<VehicleImage> vehicleImages;
请参阅 javadoc 了解它可能采用的属性,并根据您的 table 定义添加它们。
Here 你可以找到一些如何使用它的例子。
JPA 支持实体之间的关联。您需要的是 @OneToMany
如果您的 vehicle_image' table contains column
vehicle_idyou will need following mapping in
车辆` class:
@Entity
@Table(name = "VEHICLE")
@XmlRootElement(name = "vehicle")
public class Vehicle {
// other fields here
@OneToMany(mappedBy = "vehicle")
Set<VehicleImage> vehicleImages;
}
还有 VehicleImage
中的这个
@Entity
@Table(name = "VEHICLE_IMAGE")
public class VehicleImage{
// other fields here
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinColumn(name="VEHICLE_ID", referencedColumnName = "ID")
Vehicle vehicle;
}
此外,您最好使用 Set
在 JPA 中进行集合映射,但这是一个不同的主题
我有 2 tables vehicle
和 vehicle_image
。车辆table包含车辆的所有主数据,vehicle_imagetable包含图像的元信息和图像的Base64编码字符串。在车辆上可能有 0 个或更多图像。
现在,当我查询车辆对象时,我希望该对象包含来自 vehicle_image table 的信息。
我是 JPA 的新手,我能找到的示例似乎总是从另一个值中读取一个值 table,而不是列表。
向包含图像数据的车辆对象添加属性的最简单方法是什么?
@Entity
@XmlRootElement(name = "vehicle")
public class Vehicle {
@Id
private String vin;
private String commission;
@Column(name="swiss_type_number")
private String swissTypeNumber;
@Column(name="sale_type")
private String saleType;
@Column(name="exterior_color")
private String exteriorColor;
@Column(name="interior_color")
private String interiorColor;
private String remarks;
@Column(name="additional_title")
private String additionalTitle;
@Column(name="added_value_description")
private String addedValueDescription;
@Column(name="first_registration")
private String firstRegistration;
private String guaranty;
@Column(name="last_inspection")
private String lastInspection;
private int dealer;
private int mileage;
private int price;
private int seats;
@Column(name="model_year")
private int modelYear;
@Column(name="car_damaged_in_accident")
private boolean carDamagedInAccident;
private boolean imported;
// List of images
List<VehicleImage> vehicleImages; // Something like this would be nice
}
你这里有一个one-to-may关系,你可以使用:
@OneToMany
List<VehicleImage> vehicleImages;
请参阅 javadoc 了解它可能采用的属性,并根据您的 table 定义添加它们。
Here 你可以找到一些如何使用它的例子。
JPA 支持实体之间的关联。您需要的是 @OneToMany
如果您的 vehicle_image' table contains column
vehicle_idyou will need following mapping in
车辆` class:
@Entity
@Table(name = "VEHICLE")
@XmlRootElement(name = "vehicle")
public class Vehicle {
// other fields here
@OneToMany(mappedBy = "vehicle")
Set<VehicleImage> vehicleImages;
}
还有 VehicleImage
@Entity
@Table(name = "VEHICLE_IMAGE")
public class VehicleImage{
// other fields here
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinColumn(name="VEHICLE_ID", referencedColumnName = "ID")
Vehicle vehicle;
}
此外,您最好使用 Set
在 JPA 中进行集合映射,但这是一个不同的主题