【发布时间】:2020-06-25 02:30:15
【问题描述】:
当使用 Hibernate 和 JPA 时,我有一个现有的 DAO 抽象类,它以这种方式设置实体管理器:
@PersistenceContext(unitName = "<name>")
private EntityManager entityManager;
在某些方法中,它的使用方式如下:
public ObjectType findByPrimaryKey(int id) {
return entityManager.find(ObjectType, id);
}
我想在与“查找”查询相同的事务中设置数据库配置参数。但是,我似乎找不到 entityManager 使用的内部事务。我编写了一个检查 Transactional 注释并在其中设置变量的 Aspect,并在 findByPrimaryKey 方法之上添加了@Transactional,但仍然没有在会话中设置。
这里有什么不正确的地方或其他方法吗?理想情况下,希望在每次查询之前设置一个特殊变量。
【问题讨论】:
-
你到底想设置什么
database configuration parameter? -
它在 Postgres 中,在自定义命名空间下。每个事务的配置参数应该不同。您可以将其视为
mynamespace.user_id。为了安全起见,这在表的策略中用于过滤掉行。