2013-10-17 12 views

答えて

0

エンティティの列名は何ですか?エンティティはテーブルの列の一部を使用する可能性があり、その他のフィールドはありません。

Entityは別のEntityクラスを拡張し、Entityクラスのフィールドが異なるテーブルの列で表されるようにすることができます。

ネイティブSQlクエリを実行してテーブルの列を表示できます。

13

column namesを取得するには、まずあなたはorg.hibernate.metadata.ClassMetadataを使用してエンティティのpropertiesを見つける必要がある:

propertyNamesAppTaskConfigのプロパティ名を表す文字列の配列です
ClassMetadata classMetadata = sessionFactory.getClassMetadata(AppTaskConfig.class); 
String[] propertyNames = classMetadata.getPropertyNames(); 

。あなたがにアクセスするためにリフレクションAPIを使用することができます...これは正常に動作しているこれを試して

+2

ここにsessionFactoryBeanとは何ですか?私はそれがsessionFactoryだとは思わない。 – instanceOfObject

+2

@instanceOfObject、https://developer.jboss.org/thread/189593?start=0&tstart=0 – Stony

+1

@ Saikaiのリンクを確認してください。このアプローチに従えば、主キーの詳細は得られません。もう1つ解決策を提供してください。 –

0
String[] columnNames = getSessionFactory().getClassMetadata(Employee.class).getPropertyNames(); 

    org.hibernate.type.Type[] columnTypes = getSessionFactory().getClassMetadata(Employee.class).getPropertyTypes(); 

:今、あなたはpropertiesの列名を見つけることができます休止状態org.hibernate.cfg.Configurationオブジェクトを使用して

列o JoinColumnのようなフィールド/ゲッターのJPAアノテーションを宣言しました。

import javax.persistence.Column; 
import javax.persistence.JoinColumn; 

// get declared field 
Field field = persistentClass.getDeclaredField("property"); 

// get declared method 
Method method = persistentClass.getMethod("get"+property.substring(0,1).toUpper()+property.substring(1))); 

// access to declared annotations or field or method to find Column or JoinColumn 
0

for (String property : propertyNames) { 
    Configuration configuration = sessionFactoryBean.getConfiguration(); 
    PersistentClass persistentClass = configuration 
        .getClassMapping(Details.class.getName()); 
    String columnName = ((Column) persistentClass.getProperty(property) 
        .getColumnIterator().next()).getName(); 
} 
関連する問題