0

プロジェクトごとに外部にあるプロパティファイルを読み込んでセッションファクトリを作成しています。私のプロパティファイルは次のとおりです。

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=root
hibernate.connection.password=root
hibernate.connection.url=jdbc:mysql://localhost:3306/hi5
hibernate.dialect=org.hibernate.dialect.MySQLDialect
entity=CmtFreeformpages,CmtNewsTicker

以下のようにプロパティファイルを読み込んでSessionfactoryを作成していますが、

properties.load(new FileReader(new File(global.constants.GlobalConstants.parentDirectory + File.separator + global.constants.GlobalConstants.propertiesFile)));
Configuration configuration = new Configuration().setProperties(properties);
Set<Object> setOfProperties = properties.keySet();
for(Object propertyObject : setOfProperties){
if (propertyObject != null) {
String propName = propertyObject.toString();
if(propName.equalsIgnoreCase("entity")){
String value = properties.getProperty(propName);
Object[] entities = value.split(",");
for(int i=0;i<entities.length;i++){
 configuration.addAnnotatedClass(entities[i]);
}
sessionFactory = configuration.buildSessionFactory();

しかし、configuration.addAnnotatedClass メソッドは文字列を受け入れません。では、注釈付きクラスを構成に追加する方法は?

ありがとう

4

2 に答える 2

1

addAnnotatedClass()を受け入れるので、 :を使用して指定されたクラス名のesClassを取得する必要があります。ClassClass.forName()

configuration.addAnnotatedClass(Class.forName(entities[i]));

Class.forName()完全修飾クラス名、つまりパッケージ名が含まれていることを期待していることに注意してください。

于 2012-11-19T13:04:02.193 に答える
0

構成に追加する前に、パッケージ名とクラス名を使用して、名前付きエンティティクラスをクラスローダーでロードする必要があります。

パッケージレベルでアノテーションがある場合は、addPackageを呼び出すことも価値があるかもしれません。

于 2012-11-19T13:02:23.427 に答える