我需要帮助来正确定义@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)
在此先感谢您的帮助
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行。
| 归档时间: |
|
| 查看次数: |
4426 次 |
| 最近记录: |