首页 > 解决方案 > 如何在不提交整个事务的情况下根据持久化实体管理器维护插入和删除

问题描述

如何维护 jpa 中的删除和插入以及如何在 jta 和 jpa 中将重复数据保留在同一个 entitymanager 中

查询的执行是这样的

delete from SERVERVARIABLES where SERVER_ID=? and VARIABLE_NAME=?

delete from SERVERVARIABLES where SERVER_ID=? and VARIABLE_NAME=?

insert into SERVERVARIABLES (DEFAULT_VALUE, description, SERVER_ID, VARIABLE_NAME) values (?, ?, ?, ?)

insert into SERVERVARIABLES (DEFAULT_VALUE, description, SERVER_ID, VARIABLE_NAME) values (?, ?, ?, ?)

我需要执行应该像

delete from SERVERVARIABLES where SERVER_ID=? and VARIABLE_NAME=?

insert into SERVERVARIABLES (DEFAULT_VALUE, description, SERVER_ID, VARIABLE_NAME) values (?, ?, ?, ?)

delete from SERVERVARIABLES where SERVER_ID=? and VARIABLE_NAME=?

insert into SERVERVARIABLES (DEFAULT_VALUE, description, SERVER_ID, VARIABLE_NAME) values (?, ?, ?, ?)

public void deleteservervariable(String serverId,String name) {
    CriteriaBuilder builder = null;
    EntityManager entitymanager = null;
    try {
        entitymanager = JPAUtility.getInstance().getEntityManager 
                    (APIArtifactConstant.APIManagerCacheUnit);
        builder = entitymanager.getCriteriaBuilder();
        CriteriaDelete<Servervariable> apidelete = builder.createCriteriaDelete(Servervariable.class);
        Root<Servervariable> apiserverVariabel = apidelete.from(Servervariable.class);
        apidelete.where(builder.equal(apiserverVariabel. 
                    get(APIArtifactImportConstant.id). 
                    get(APIArtifactImportConstant.apiserverId), 
                   serverId),builder.equal(apiserverVariabel. 
                     get(APIArtifactImportConstant.id). 
                   get(APIArtifactImportConstant.APIvariableName), name));
        entitymanager.joinTransaction();
        entitymanager.createQuery(apidelete).executeUpdate();
    }


    public void deleteservervariable(String serverId,String name)


    public void presistservervariable(Servervariable servervariable,EntityManager entitymanager) { 

        try { entitymanager.joinTransaction(); 
            entitymanager.persist(servervariable); } catch(Exception e) { 
   e.printStackTrace(); } } 

标签: javaspringhibernatejpa

解决方案


推荐阅读