Я хочу сопоставить свои объекты следующим образом: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
..........
}
И FINA 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 |
--------------------------------------------------------
Кроме того, если вы чувствуете, я не разработаны мои классы сущностей права, пожалуйста, дайте мне знать, как я могу улучшить.
Благодаря
I т Похоже, что вы пытаетесь иметь это в таблице, однако это не имеет ничего общего с таблицей, насколько правила нормализации обеспокоены этим получает данные делятся на разные столы но при получении вы можете получить это в этом стиле –
Спасибо. Не могли бы вы сообщить мне, как именно я могу получить этот стиль? Именно там я застрял. – sriramsridharan