【发布时间】:2016-04-26 11:17:31
【问题描述】:
我有实体。
@Entity
class Foo {
@Column
Long id;
/* ... */
}
Hibernate 为其生成 Metamodel:
@StaticMetamodel(Foo.class)
public abstract class Foo_ {
public static volatile SingularAttribute<Foo, Long> id;
/* ... */
}
我想做一些测试没有数据库连接。但我需要获取Foo_.id.getName() 的值以用于反射。
不幸的是,它在测试环境中不起作用。此测试失败:
@Test
public void metaModelTest() {
Assert.assertTrue(Foo_.id != null);
}
我在这里找到:JPA/Hibernate Static Metamodel Attributes not Populated -- NullPointerException
当构建 Hibernate EntityManagerFactory 时,它会为每个已知的托管类型寻找一个规范的元模型类,如果找到,它将向它们注入适当的元模型信息,如 [JPA 2 规范中所述,第 6.2.2 节,第 200 页]
有没有办法让模拟 EntityManagerFactory 做到这一点?或许还有其他解决方案?
注意: 测试在 Spring 测试上下文中。
【问题讨论】:
标签: java spring hibernate metamodel