I have been trying to solve this for whole day but no luck! Also i tried to read most of the tutorials on the net but as you all know they all are full of useless examples t
Why don't you use an @Embedded object? When using an embedded object, you get
the logical separation you desire in your code and keep your database compliant with Entity-Relational Normalization rules.
It's weird to think on a One-to-One relationship, because even though JPA/Hibernate allows it, all data should be stored in the same table, making you model simpler, while also simplifying queries and increasing database performance by removing the need for a Join operation.
When using Embedded objects you don't have to worry about mapping IDs and bizarre relations, since your ORM is capable of understanding that your just making a code separation, instead of demanding an actual relation of One-to-One between tables.
class Vehicle {
@Id
@Column(name = "ID")
private long vehicleId;
@Column(name = "BRAND")
private String brand;
@Column(name = "MODEL")
private String model;
@Column(name = "DEV_YEAR")
private int devYear;
@Column(name = "REG_NUMBER")
private int regNumber;
@Embedded
private TravelExtra extras;
// Constructor, getters and setters...
}
.
@Embeddable
class TravelExtras {
@Column(name = "ALLOW_SMOKE")
private boolean allowSmoke;
@Column(name = "ALLOW_FOOD")
private boolean allowFood;
@Column(name = "ALLOW_DRINKS")
private boolean allowDrinks;
@Column(name = "AIR_CONDITIONER")
private boolean airConditioner;
// Default Constructor, getters and setters...
}