java - JPA:从另一个表加载值列表

标签 java jpa entity-relationship

我有 2 个表 vehiclevehicle_image。 vehicle表包含车辆的所有主数据,vehicle_image表包含图像的元信息和图像的Base64编码字符串。车辆上可能有 0 个或多个图像。

现在,当我查询车辆对象时,我希望该对象包含vehicle_image 表中的信息。

我对 JPA 还很陌生,我能找到的示例似乎总是只从另一个表中读取一个值,而不是列表。

向包含图像数据的车辆对象添加属性的最简单方法是什么?

@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
}

最佳答案

JPA 支持实体之间的关联。您需要的是 @OneToMany 如果您的 vehicle_image' 表包含列vehicle_id您将需要在 Vehicle` 类中进行以下映射:

@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 中进行集合映射,但这是一个不同的主题

关于java - JPA:从另一个表加载值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913446/

相关文章:

doctrine - 有关 Doctrine ORM 的 YAML 映射的完整文档?

java - google oauth 获取重定向 url 失败

java - 如何在没有应用程序服务器的情况下欺骗数据源的 jndi 查找

java - 删除与另一个对象有manyTomany关系的对象

mysql - SQL - 如何选择最受喜欢的产品?

java - Hibernate 中可选的多对多关系

java - 在解决时间问题的同时移动链式规划实体

java - 递归树索引的顺序?

Spring hibernate 手动提交

java - JSON 在发布时递归调用对象