为Hibernate域对象创建元表

时间:2011-03-25 12:23:26

标签: java hibernate spring annotations entitymanager

在我的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进行数据访问

1 个答案:

答案 0 :(得分:1)

您可以使用SessionFactory的getAllClassMetadata方法,除了字段大小(我在javadoc中找不到)之外,它会为您提供所需的一切。但是,通过检查对应于类的每个持久属性的类字段上设置的@Column注释,即使这样也应该相对容易。

从ENtityManager中,您可以调用getDelegate来访问Hibernate会话,然后调用getSessionFactory()来访问会话工厂。