标签: entitymanager

JPA EntityManager:为什么在merge()上使用persist()?

EntityManager.merge() 可以插入新对象并更新现有对象.

为什么要使用persist()(只能创建新对象)?

merge jpa entitymanager persist java-persistence-api

925
推荐指数
12
解决办法
58万
查看次数

在没有persistence.xml配置文件的情况下创建JPA EntityManager

有没有一种方法来初始化EntityManager没有定义的持久性单元?您能否提供创建实体管理器所需的所有属性?我需要EntityManager在运行时从用户的指定值创建.不能更新persistence.xml和重新编译.

关于如何做到这一点的任何想法都受到欢迎!

jpa runtime entitymanager persistence.xml

74
推荐指数
5
解决办法
10万
查看次数

EntityManager已关闭

[Doctrine\ORM\ORMException]   
The EntityManager is closed.  
Run Code Online (Sandbox Code Playgroud)

在插入数据后出现DBAL异常后,EntityManager关闭,我无法重新连接它.

我试过这样但是没有得到联系.

$this->em->close();
$this->set('doctrine.orm.entity_manager', null);
$this->set('doctrine.orm.default_entity_manager', null);
$this->get('doctrine')->resetEntityManager();
$this->em = $this->get('doctrine')->getEntityManager();
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何重新连接?

orm entitymanager symfony doctrine-orm

74
推荐指数
8
解决办法
8万
查看次数

注入EntityManager Vs. EntityManagerFactory的

一个很长的问题,请耐心等待.

我们将Spring + JPA用于Web应用程序.我的团队在讨论如何在注入EntityManagerFactoryGenericDAO(基于泛型的东西对AppFuse中提供的线DAO,我们不使用JpaDaosupport过的注射某种原因)EntityManager.我们正在使用"应用程序管理持久性".

反对注入a的论点EntityManagerFactory是它太重而且不需要,EntityManager我们需要它.此外,由于Spring会为每个Web请求创建一个DAO的新实例(我怀疑这一点),因此不会出现任何并发问题,因为同一个EntityManager实例中有两个线程共享.

注入EFM的理由是,它是一个很好的做法,总是很好地拥有工厂的句柄.

我不确定哪种方法最好,有人可以赐教吗?

java spring jpa entitymanager

68
推荐指数
4
解决办法
6万
查看次数

JPA合并与持久性

到目前为止,我的偏好始终是使用EntityManager merge()来处理插入和更新.但我也注意到merge在update/insert之前执行了额外的select查询,以确保数据库中不存在记录.

现在我正在开发一个需要对数据库进行大量(批量)插入的项目.从性能的角度来看,在我绝对知道我总是在创建一个要保留的对象的新实例的场景中使用persist而不是merge是有意义的吗?

java merge jpa entitymanager persist

66
推荐指数
2
解决办法
8万
查看次数

EntityManager.flush做了什么以及为什么需要使用它?

我有一个EJB,我将对象保存到数据库.在我看到的一个例子中,一旦保存了这个数据(EntityManager.persist),就会调用EntityManager.flush(); 为什么我需要这样做?我保存的对象没有附加,以后不在方法中使用.事实上,一旦保存,方法返回,我希望资源被释放.(示例代码也会在删除调用中执行此操作.)

if (somecondition) {
    entityManager.persist(unAttachedEntity);
} else {
    attachedEntityObject.setId(unAttachedEntity.getId());
}
entityManager.flush();
Run Code Online (Sandbox Code Playgroud)

java jpa entitymanager

58
推荐指数
5
解决办法
10万
查看次数

java.lang.IllegalArgumentException:删除分离的实例com.test.User#5

我有一个使用JPA(transaction-type ="JTA")的java EE项目,hibernate作为提供者.我写我的bean来处理CRUD的事情.该程序在JBOSS 7 AS中运行.

我有一个EntityManagerDAO:

@Stateful
public class EntityManagerDao implements Serializable {

    @PersistenceContext(unitName = "dtdJpa")
    private EntityManager entityManager;

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public Object updateObject(Object object) {
        object = entityManager.merge(object);
        return object;
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void createObject(Object object) {
        entityManager.persist(object);
    }

    public void refresh(Object object) {
        entityManager.refresh(object);
    }

    public <T> T find(Class<T> clazz, Long id) {
        return entityManager.find(clazz, id);
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void deleteObject(Object object) {
        entityManager.remove(object);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我调用时deleteObject,会出现这个异常.

java.lang.IllegalArgumentException:删除分离的实例com.test.User#5

这是怎么造成的,我该如何解决?

jpa entitymanager illegalargumentexception sql-delete

51
推荐指数
1
解决办法
7万
查看次数

PersistenceUnit vs PersistenceContext

在我很少成功使用的项目中

@PersistenceUnit(unitName = "MiddlewareJPA")
EntityManagerFactory emf;
...
EntityManager entityManager = emf.createEntityManager();
Run Code Online (Sandbox Code Playgroud)

获取EntityManager数据库连接,但几天前我试图将我的项目移动到Jboss EAP 6.2它无法创建EntityManager.我在Google上搜寻它,我发现,我应该尝试改变@PersistenceUnit,以

@PersistenceContext(unitName = "MiddlewareJPA")
private EntityManager entityManager;
Run Code Online (Sandbox Code Playgroud)

获取EntityManager.它工作但我不知道为什么.有什么区别bettween PersistenceUnitPersistenceContext?每个人的利弊是什么?我们应该在哪里使用其中一个?

java persistence jpa entitymanager java-ee

48
推荐指数
3
解决办法
3万
查看次数

EntityManager.find()和EntityManger.getReference()之间有什么区别?

什么是区别

<T> T EntityManager.find(Class<T> entityClass, Object primaryKey) and 
<T> T EntityManager.getReference(Class<T> entityClass, Object primaryKey) 
Run Code Online (Sandbox Code Playgroud)

我认为getReference如果被管理则返回实体.并且如果它被管理则查找返回实体,否则在数据库上执行SQL以使其受管.

请确认.


上下文:从webapp我得到要删除的对象的主键(pk类型为long); 应该管理实体以删除.

EntityManager.remove(Object entity)
Run Code Online (Sandbox Code Playgroud)

将托管实体传递给entitymanager删除方法'什么是更好更正确的选项?找到还是得到参考?'

java jpa entitymanager

46
推荐指数
3
解决办法
5万
查看次数

@Autowired vs @PersistenceContext for EntityManager bean

有什么区别:

@Autowired
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)

与:

@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)

这两个选项都适用于我的应用程序,但是我可以通过使用 @Autowired注释来解决问题吗?

spring jpa entitymanager

46
推荐指数
4
解决办法
4万
查看次数