hibernate & jpa: таблица с составным первичным ключом: проблема автоматического увеличения - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть такие сущности:

@Entity
public class Carburant implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id_carburant")
    private long id;
    private String nom;
    private String description;

    @JsonIgnore
    @OneToMany(mappedBy="carburant")
    private Set<HistCarb> stations ;

    public Carburant() {
        super();
    }
}

2

@Entity
@Table(name="Station")
public class Station implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id_station")
    private long id ;
    private String nom;
    private String ville;
    private String adresse;

    @Transient
    private boolean nul = false;

    @JsonIgnore
    @OneToMany(mappedBy="station")
    private Set<HistCarb> historiques ;

    public Station() {
        super();
    }
}

3

@Entity

public class HistCarb implements Serializable{

    @Id
    @Column(name="id",updatable=false,nullable=false)
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;

    private Date date;
    private Integer prix;

    @Id
    @ManyToOne
    @JoinColumn(name="id_station")

    private Station station ;

    @Id
    @ManyToOne
    @JoinColumn(name="id_carburant")
    private Carburant carburant ;


    public HistCarb() {
        super();

    }
}

диаграмма классов: введите описание изображения здесь

и ее проблема: hibernate дает мне этот sql-код для таблицы HistCarb:

create table HistCarb (
       id bigint not null,
        date datetime,
        prix integer,
        id_station bigint not null auto_increment,
        id_carburant bigint not null,
        primary key (id_station, id, id_carburant)
    ) engine=InnoDB

с id_station auto_increment, но я хочу, чтобы hibernate генерировал только идентификатор столбца в качестве поля auto_increment, как на самом деле яупомянутое в юридическом лице 3 Я надеюсь, что кто-то может помочь мне с этой проблемойЯ не использовал встроенный идентификатор для объекта 3, я думаю, что мы можем сделать это без встроенного идентификатора, потому что я нашел его очень сложным для реализации, и когда я попытался использовать встроенный идентификатор для этой ситуации, это дает некоторые ошибки.

1 Ответ

0 голосов
/ 15 декабря 2018

В HistCarb у вас есть @Id на 3 полях, поэтому вы получаете составной ключ.Удалите @Id из station и carburant следующим образом:

@Entity
public class HistCarb implements Serializable{

    @Id
    @Column(name="id",updatable=false,nullable=false)
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;

    private Date date;
    private Integer prix;

    @ManyToOne
    @JoinColumn(name="id_station")

    private Station station ;

    @ManyToOne
    @JoinColumn(name="id_carburant")
    private Carburant carburant ;


    public HistCarb() {
        super();

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...