为什么我会收到 JPA @OneToOne 未知实体错误?

问题描述 投票:0回答:1

对于以下具有一个-一对一关系。

车辆(父类):

package ca.allauto.ups.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "vehicle")
@Getter
@Setter
public class Vehicle {
    private enum Color {
        Beige,
        Black,
        Blue,
        Brown,
        Burgundy,
        Copper,
        Gold,
        Green,
        Grey,
        Orange,
        Purple,
        Red,
        Silver,
        Teal,
        White,
        Yellow
    }
    
    private enum KmsOrMiles {
        Kms,
        Miles
    }
    
    private enum Transmission {
        Automatic,
        Manual
    }
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;
    
    @Column(name="year")
    private short year;
    
    // THIS IS THE PROBLEMATIC FIELD
    // "id" IS THE PK IN THE "vehicle_model" TABLE
    @OneToOne
    @JoinColumn(name="model_id", referencedColumnName="id")
    private Long modelId;
    
    @Column(name="doors")
    private DoorsEnum doors;
    
    @Column(name="vehicle_type")
    private VehicleTypeEnum vehicleType;
    
    @Column(name="color")
    private Color color;
    
    @Column(name="odometer")
    private int odometer;
    
    @Column(name="kms_miles")
    private KmsOrMiles kmsOrMiles;
    
    @Column(name="transmission")
    private Transmission transmission;
    
    @Column(name="vin")
    private String vin;
}

VehicleModel(子)类:

package ca.allauto.ups.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name = "vehicle_model")
@Getter
@Setter
public class VehicleModel {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;
    
    @Column(name="model")
    private String model;
    
    @OneToOne(mappedBy = "modelId")
    private Vehicle vehicle;
}
java hibernate jpa mapping one-to-one
1个回答
0
投票

这行代码是错误的:

private Long modelId;

改为:

private VehicleModel modelId;
© www.soinside.com 2019 - 2024. All rights reserved.