1

私たちは、人が 1 台の車しか持てない世界に住んでいるとしましょう (下手な例で申し訳ありません)。

UserDetailsこのクラスがあるとしましょう

public class UserDetails {

    @Id
    @GeneratedValue
    @Column(name = "USER_ID")
    private int id;
    @Column(name = "USER_NAME")
    private String name;
    @OneToOne
    private Vehicle vehicle;

    public Vehicle getVehicle() {
        return  vehicle;
    }

    public void setVehicle(Vehicle  vehicle) {
        this.vehicle =  vehicle;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

そして、これは私Vehicleのクラスです

@Entity
public class Vehicle {
    @Id
    @GeneratedValue
    private long vechile_id;
    private String vehicleName;
    public long getVechile_id() {
        return vechile_id;
    }
    public void setVechile_id(long vechile_id) {
        this.vechile_id = vechile_id;
    }

    public String getVehicleName() {
        return vehicleName;
    }
    public void setVehicleName(String vehicleName) {
        this.vehicleName = vehicleName;
    }   
}

データベースに保存すると正常に動作しますが、車両のテーブルを削除しようとすると、このエラーがワークベンチに表示されました

注記UserDetailsVehicleテーブルの両方に 1 つのエントリしかないことに注意してください。

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails

SQL Statement:

drop table `hibernate`.`vehicle`

テーブルをドロップできないのはなぜですか? 最初に UserDetails テーブルを削除する必要がありますか?

4

1 に答える 1

1

Vehicle テーブルを削除すると、 Vehicle 列の外部キーがどこも指していないため、 UserDetails テーブルの参照整合性が失われます。UserDetails から fk 制約または vehicle 列を削除すると、必要なテーブルを削除できます。

于 2012-11-30T09:55:10.873 に答える