你好,stackoverflow社區。Apache OpenJPA - 僅當數據庫中不存在時才插入元組
我想知道,如果OpenJPA有可能首先檢查對象在插入前是否已經存在於數據庫中。
我有兩個clases:
imports...
@Entity(name="Player")
public class Player {
private long id;
private String nickName;
private Team team; /* A Player is on a Team */
@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name = "team_id")
public Team getTeam() {
return team;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public long getId() {
return id;
}
/* more getters/setters ...*/
}
@Entity(name="Team")
public class Team {
private long id;
private String name;
private List<Player> players; /* A Team Has Players */
@OneToMany(mappedBy = "team", targetEntity = Player.class,
fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
public List<Player> getPlayers() {
return players;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public long getId() {
return id;
}
如果我想添加一個新的球員或球隊,JPA應該先檢查是否該球員或球隊已經在數據庫中。 如果是,那麼它應該使用現有單元的主鍵/外鍵。
這可能嗎?或者我需要寫我自己的方法?
問候 Veote
JPA會清楚地檢查JPA規範中的內容。如果傳遞給持久化/合併的對象處於分離/管理狀態,則會更新它,否則會創建它。 – DataNucleus 2012-02-28 08:04:33
我認爲這裏的問題是,我從來不想更新現有的元組。 – veote 2012-02-28 10:22:45
所以你必須檢查存在。 JPA不會爲你做。 – DataNucleus 2012-02-28 10:25:51