我正在使用@SqlResultSetMapping
一个@Entity
纯只读的(并且在数据库中没有后备表)。我将数以万计的这些加载到内存中,所以我需要将实体从 EntityManager 中分离出来,以避免在我以后工作时进行 Hibernate 的脏实体检查。
有没有办法注释实体或 SqlResultSetMapping,以便永远不会将实体添加到 EntityManager?
非持久化实体:
@SqlResultSetMapping(name = "fooMapping", entities = @EntityResult(entityClass = Foo.class))
@Entity
public class Foo {
@Id
public Long row_id;
public String name;
}
本机查询:
String sql = "SELECT id AS row_id, friendlyName AS name FROM SomeTable";
Query q = JPA.em().createNativeQuery(sql, "fooMapping");
List<Foo> fooList = q.getResultList();
当前解决方案:
for (Foo f : fooList) {
JPA.em().detach(f); // 100x improvement for subsequent DB work
}
// subsequent database work