在我的Hibernate + Spring应用程序中,我有几个基于注释的域对象。我想通过所有这些来创建metatable,并为所有这些创建定义。这个metatable应该是这样的:
Entity Name | Field Name | Field Type | Field Size| etc.
例如,
@Entity
public class User {
@Column(name = "username", length = 255)
private String username;
@Column(name = "password", length = 255)
private String password;
}
应该创建两个记录
Entity Name | Field Name | Field Type | Field Size|
User | username | String | 255 |
User | password | String | 255 |
怎么可以这样做?
P.S。我们使用Spring的LocalContainerEntityManagerFactoryBean进行数据访问
答案 0 :(得分:1)
您可以使用SessionFactory的getAllClassMetadata方法,除了字段大小(我在javadoc中找不到)之外,它会为您提供所需的一切。但是,通过检查对应于类的每个持久属性的类字段上设置的@Column注释,即使这样也应该相对容易。
从ENtityManager中,您可以调用getDelegate来访问Hibernate会话,然后调用getSessionFactory()来访问会话工厂。