更新父实体插入新条目
Updating a parent entity insert new entry
我有一个 EndangeredFish
实体扩展 Fish
具有 JOINED 继承类型的实体。
一段时间后,我们希望将 Fish
更新为 EndangeredFish
(带有 numberOfSpeciesLeft
字段)。
Fish fish = fishRepository.findOne(fishId);
EndangeredFish endangeredFish = fishToEndangeredFish.apply(fish);
endangeredFish.setNumberOfSpeciesLeft(500);
endangeredFish.setId(fishId);
Fish updatedFish = fishRepository.save(endangeredFish);
这会在 ENDANGERED_FISH
table 中插入一个新条目(正如预期的那样),而且 还会在 FISH
table 中插入一个新条目,我不希望。
我想知道我的案例是否适合实体继承,或者我应该只使用一个 FISH
table 和 null
numbOfSpeciesLeft
字段开始并稍后更新.
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Fish {
@Id
@GeneratedValue
private Long id;
private String name;
private Integer numOfFins;
private String color;
@ManyToOne
@JoinColumn
private Environment environment;
@OneToMany
@JoinColumn
private String parts
}
@Entity
public class EndangeredFish extends Fish {
Integer numOfFishLeft;
}
I wonder if my case is suited for entity inheritance or I should just use one FISH table with null
numbOfSpeciesLeft field at the start and update it later.
不,这不适合继承。如果您有一个实例在其生命周期内基本上应该更改其类型,那么您使用的继承是错误的。
numbOfSpeciesLeft
的 null
值听起来是一个合理的开始。如果您有更多信息需要跟踪,它可能会演变成对 EndangermentInformation
的可选引用。这可以映射为一对一关系或可嵌入。
我有一个 EndangeredFish
实体扩展 Fish
具有 JOINED 继承类型的实体。
一段时间后,我们希望将 Fish
更新为 EndangeredFish
(带有 numberOfSpeciesLeft
字段)。
Fish fish = fishRepository.findOne(fishId);
EndangeredFish endangeredFish = fishToEndangeredFish.apply(fish);
endangeredFish.setNumberOfSpeciesLeft(500);
endangeredFish.setId(fishId);
Fish updatedFish = fishRepository.save(endangeredFish);
这会在 ENDANGERED_FISH
table 中插入一个新条目(正如预期的那样),而且 还会在 FISH
table 中插入一个新条目,我不希望。
我想知道我的案例是否适合实体继承,或者我应该只使用一个 FISH
table 和 null
numbOfSpeciesLeft
字段开始并稍后更新.
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Fish {
@Id
@GeneratedValue
private Long id;
private String name;
private Integer numOfFins;
private String color;
@ManyToOne
@JoinColumn
private Environment environment;
@OneToMany
@JoinColumn
private String parts
}
@Entity
public class EndangeredFish extends Fish {
Integer numOfFishLeft;
}
I wonder if my case is suited for entity inheritance or I should just use one FISH table with
null
numbOfSpeciesLeft field at the start and update it later.
不,这不适合继承。如果您有一个实例在其生命周期内基本上应该更改其类型,那么您使用的继承是错误的。
numbOfSpeciesLeft
的 null
值听起来是一个合理的开始。如果您有更多信息需要跟踪,它可能会演变成对 EndangermentInformation
的可选引用。这可以映射为一对一关系或可嵌入。