创建实体时,它通常会为主键接收一些自动生成的int值。我有一个名为'Attribute'的实体,它可以有一个相关的'参数'实体列表。
@Entity
@Table(name = "ATTRIBUTES")
public class Attribute {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ATTRIBUTE_ID", length = 10, nullable = false)
private int id;
@Column(name = "NAME")
private String name;
@JsonIgnore
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(mappedBy = "attribute", cascade = CascadeType.ALL)
private List<Parameter> parameters;
接下来我有一个名为'参数'的实体需要与'属性'链接。所以当我创建一个'参数'时,我需要指定它的'属性'。 我怎么做?有什么诀窍?
@Entity
@Table(name = "PARAMS")
public class Parameter {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "PARAMETER_ID", length = 10, nullable = false)
private int id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "ATTRIBUTE_ID", referencedColumnName = "ATTRIBUTE_ID")
private Attribute attribute;
@Column(name = "VALUE")
private String value;
答案 0 :(得分:1)
您的问题尚不清楚,但我认为您要求创建一个参数实例而不需要手头的属性实例?您必须具有ATTRIBUTE_ID,因为它可能不为空,并且有多种方法可以继续。假设您已经有一个属性实例,您可以明确地将它的主键添加为参数的属性,例如
@Column(nullable=false, name="ATTRIBUTE_ID")
private Integer attributeId;
当然会创建getter / setter并明确设置id。如果你有一个属性实例,你可以在属性中添加参数并使用级联持久性,还有其他策略。