Первичный ключ состоит из одного внешнего ключа - PullRequest
0 голосов
/ 05 сентября 2018

Я делаю веб-приложение JEE с Hibernate. Я делаю отображение в бобах с аннотациями.

Я показываю

enter image description here Несмотря на мои исследования на форуме и других веб-сайтах, я не могу составить свой первичный ключ с помощью внешнего ключа, как на изображении выше.

Мне только что удалось поместить мой ключ "id-command" в FK, но я бы хотел, чтобы она сочинила PK.

Заранее благодарю за помощь.

Хорошего дня.

1 Ответ

0 голосов
/ 05 сентября 2018

Спасибо за ваш ответ.

При первом запуске приложения в базе данных нет таблицы. Они созданы Hibernate.

Я даю вам свой код (в коде, который я вам даю, нет получателей и установщиков): Класс BonLivraison (конец кода этого класса - просто попытка)

пакет sii.dsi.beans;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.*;

@SuppressWarnings("serial")
@Entity
@Table
public class BonLivraison implements Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id_bon_livraison;
    @Column(nullable=false, length=255, unique=false)
    private String numero_bon_livraison;
    @Column(nullable=false, unique=false)
    private double montant_bon_livraison;
    @Column(nullable=false, unique=false)
    private Date date_bon_livraison;
    @Column(nullable=false, unique=false)
    private Date date_depot_facture;

    @OneToOne
    @JoinColumn(name="id_commande")
    private PosteLigne poste_ligne_id_commande; 
    @OneToOne
    @JoinColumn(name="id_posteligne")
    private PosteLigne poste_ligne_id;

    // Getters and Setters
}

Класс Команд :

package sii.dsi.beans;

import java.io.Serializable;

import javax.persistence.*;

import sii.dsi.beans.Affaire;

@SuppressWarnings("serial")
@Entity
@Table
public class Commande implements Serializable{
    @Column
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id_commande;
    @Column(nullable=false, length=255, unique=false)
    private String numero_commande;
    @Column(nullable=false, length=255, unique=false)
    private String numero_bc;
    @OneToOne
    private Affaire affaire;

}

Класс PosteLigne :

package sii.dsi.beans;

import java.io.Serializable;

import javax.persistence.*;

@SuppressWarnings("serial")
@Entity
@Table
public class PosteLigne implements Serializable{

    @EmbeddedId
    private PosteLignePK poste_ligne_pk;
    @Id
    private int id_poste_ligne;
    @Column(nullable=false, unique=false)
    private double montant_poste_ligne;
    @Column(nullable=false, unique=false)
    private boolean clos;
    @Column(nullable=false, unique=false)
    private int numero_ligne;

}

Класс PosteLignePK :

package sii.dsi.beans;

import java.io.Serializable;

import javax.persistence.*;

@SuppressWarnings("serial")
@Embeddable
public class PosteLignePK implements Serializable{

    private int id_poste_ligne;
    @OneToOne
    @JoinColumn(name="id_commande")
    private Commande commande;


    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id_poste_ligne;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        PosteLignePK other = (PosteLignePK) obj;
        if (id_poste_ligne != other.id_poste_ligne)
            return false;
        return true;
    }

}

Сообщение об ошибке:

Внешний ключ, ссылающийся на sii.dsi.beans.PosteLigne от sii.dsi.beans.BonLivraison имеет неправильный номер столбца. должно быть 2

Я думаю, что проблема в конце класса BonLivraison.

Спасибо за вашу помощь

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