java - Apache OpenJPA - 仅当数据库中不存在时插入元组

标签 java jpa openjpa

您好 stackoverflow 社区。

我想知道,OpenJPA 是否有可能在插入之前首先检查对象是否已存在于数据库中。

我有两个类(class):

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 应首先检查该玩家或团队是否已在数据库中。 如果是,则应使用现有单元的主/外键。

这可能吗?还是我需要编写自己的方法?

致以诚挚的问候 投票

最佳答案

您可能想检查此开关: http://openjpa.apache.org/builds/2.2.0/apache-openjpa/docs/jpa_2.2.html#jpa_2.2_cascadePersist

我猜您正在使用 OpenJPA 2.2.0。

关于java - Apache OpenJPA - 仅当数据库中不存在时插入元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464567/

相关文章:

java - Tomcat 出现 AccessDeniedException?

java - 如何从我的项目中创建 exe 文件

Java Checkstyle 严重级别继承意义?

java - Hibernate JPA 序列(非 Id)

jpa - 警告 : annotation processor 'org.apache.openjpa.persistence.meta.AnnotationProcessor6' less than -source '1.8'

java - 为什么 OpenJPA 无法将具有 JAXB 对象的字段识别为持久状态?

java - Android Firebase 排序

java - Oracle Hibernate 时间戳/日期映射问题

java - 添加到集合中时,类不会保留新的关联对象

java - OpenJPA 连接错误