我正在尝试修改其他人编写的大量代码的一部分。我不知道我在做什么。
我有一个一对多的关系:code表中的每个条目在code\u属性表中可以有许多条目。我试着包含一个最小的例子(如下),但它是不可执行的,因为我没有技能,使它这样。
我的问题是,每次更新代码表中的条目时,都会添加一个新的集合(即使没有任何更改),而不是只更新代码\属性表中的关联条目。然后似乎有一些代码来清理这个问题。
mysql> select * from code_property where code_id=341965;
+----------+-----------------------+-------------------------------------+---------+
| id | name | property | code_id |
+----------+-----------------------+-------------------------------------+---------+
| 37187304 | incisivRunOptions | -access +rw | 341965 |
| 37187305 | designTabsActiveIndex | 1 | 341965 |
| 37187306 | incisivCompileOptions | -timescale 1ns/1ns -sysv -f files.f | 341965 |
| 37187307 | incisivRunOptions | -access +rw | 341965 |
| 37187308 | designTabsActiveIndex | 1 | 341965 |
| 37187309 | incisivCompileOptions | -timescale 1ns/1ns -sysv -f files.f | 341965 |
+----------+-----------------------+-------------------------------------+---------+
6 rows in set (0.00 sec)
我有两个问题:
-
我不能期望它只更新code\u属性表而不创建新条目吗?(如果做得对的话。)
-
@Entity
@Table(name = "code")
public class Code extends NamedDatedEntity implements Cloneable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Min(value = 0)
@Column(name = "id")
private long id;
@ManyToOne
@JoinColumn(name = "user_id", referencedColumnName = "id")
@JsonIgnore
private User user;
@OneToMany(mappedBy = "code", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@MapKey(name = "name")
private Map<String, CodeProperty> properties;
@Entity
@Table(name = "code_property")
public class CodeProperty extends Property implements Cloneable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Min(value = 0)
@Column(name = "id")
private long id;
@ManyToOne
@JsonIgnore
private Code code;