JPA @OneToMany:外键为空

Geo*_*esD 4 jpa spring-boot

我需要帮助来正确定义@OneToMany JPA批注。尝试了不同的方式,但仍然会收到错误/问题,例如visiterCharacteristic表中的外键(visitor_revision_id)为空。

我想使用“ visitor_revision_id”将2个表加入

@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
@ToString
public class Visitor {
    @Id
    @Column(name="visitor_revision_id")
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    Long id;

    String visitorCode;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "visitor")
    List<VisitorCharacteristic> visitorCharacteristicList;
}

@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
@ToString
class VisitorCharacteristic {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    Long id;

    @JoinColumn(name = "visitor_revision_id")
    @ManyToOne(optional = false) //fetch = FetchType.EAGER, cascade =  CascadeType.ALL)
    Visitor visitor;

    @Column(nullable = false)
    String attributeCode;

    @Column(nullable = false)
    String attributeValue;    
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助

Mac*_*ski 5

JPA不会VisitorCharacteristic#visitor为您设置字段,您必须手动进行。如果您有添加后继VisitorCharacteristics的方法,则还应添加用于在特性中设置visitor的代码:

public void addVisitorCharacteristic(VisitorCharacteristic visitorCharacteristic) {
    if (visitorCharacteristicList == null) {
        visitorCharacteristicList = new ArrayList<>();
    }
    visitorCharacteristic.visitor = this;
    visitorCharacteristicList.add(visitorCharacteristic);
}
Run Code Online (Sandbox Code Playgroud)

在这里,您可以找到包含您的代码的Gist,该代码运行良好-查看第79行。