你好,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