我想我的实体以下列方式映射:JPA的Hibernate映射超过2个实体
我有一个用户,他买了车(具体品牌,型号和变体)。
为此,我创建了以下类。
Car.java
@Entity
@Table(name="CARS")
public class Car {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="CAR_ID")
private int id;
@Column(name="CAR_MAKER")
private String maker;
@OneToMany(mappedBy="car")
private Collection<CarModel> models =new ArrayList<CarModel>();
......
Getters and Setters go here
......
}
CarModel.java
@Entity
@Table(name="CAR_MODELS")
public class CarModel {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="MODEL_ID")
private int modelId;
@Column(name="MODEL_NAME")
private String modelName;
@ManyToOne
@JoinColumn(name="CAR_ID")
private Car car;
@OneToMany(mappedBy="model")
private Collection<CarVariant> variants = new ArrayList<CarVariant>();
......
Getters and Setters go here
......
}
CarVariant.java
@Entity
@Table(name="CAR_VARIANT")
public class CarVariant {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column (name="VARIANT_ID")
private int variantId;
@Column(name="VARIANT_NAME")
private String variantName;
@Column(name="FUEL_TYPE")
private String fuelType;
@ManyToOne
@JoinColumn(name="MODEL_ID")
private CarModel model;
..........
Getters and setters go here
..........
}
而国际泳联LLY,User.java
@Entity
@Table(name="MASUSER")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="USER_REC_ID")
private int recordId;
@Column(name="USER_ID")
private String id;
@Column(name="USER_NAME")
private String name;
@Column(name="USER_EMAIL_ID")
private String emailId;
@Column(name="USER_PHONE")
private String phone;
private Collection<Car> cars = new ArrayList<Car>();
}
现在,这里是我的问题。
在现实生活中,用户可能拥有许多汽车,每个汽车都有特定的品牌,型号和型号。我想用JPA/Hibernate实现这样的功能。
我可以定义一个@ManyToMany
与User
和Car
的关系。在那种情况下,如果我做user.getCars().getModels()
或user.getCars().getModels().get(0).getVariants()
我最终会得到数据库中的所有内容。
如何映射User
和Car
以获得以下输出?
--------------------------------------------------------
| USER_ID | CAR_ID | MODEL_ID | VARIANT_ID |
--------------------------------------------------------
| 1 | 1 | 2 | 3 |
--------------------------------------------------------
| 1 | 1 | 2 | 2 |
--------------------------------------------------------
| 3 | 2 | 1 | 1 |
--------------------------------------------------------
此外,如果你觉得我没有设计我的实体班的权利,请随时让我知道我可以改进。
感谢
余吨看起来像你想有此表但它没有什么尽量做表作为规范化规则而言这个数据被分成不同的表但在提取时可以使用此风格获取此文件 –
谢谢。你能不能让我知道我究竟能够以这种风格获取?这正是我卡住的地方。 – sriramsridharan