JPA: Foreign key that is also a primary key mapping

前端 未结 4 555
Happy的楠姐
Happy的楠姐 2020-12-09 10:05

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

4条回答
  •  无人及你
    2020-12-09 10:41

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

提交回复
热议问题