2016-12-15 51 views
2

我正在使用Grails項目,該項目使用大型第三方數據庫,每個表中有許多表和衆多字段。我們採取了根據需要手動將這些字段添加到我們的域類的方法。獲取db字段數據泛型類型而不將其添加到我的grails域類的方法?

我現在想要系統地訪問所有的字段,我想知道是否有辦法做到這一點,而不需要將它們添加到我的域類。例如,如果我知道列名,我想知道數據庫中的數據類型(即,它是字符串,double,int,bool,date)。

我不需要對字段進行編程訪問,因爲我可以使用第三方供應商提供的REST API與這些表進行交互。我只想知道我是否可以確定他們期望的數據類型。

我發現的Grails有一個逆向工程插件,但我不知道這就是我想要什麼,因爲我不希望創建一個域類,我只是想是這樣的:

// this is what I work for fields I've added to the domain class 
Type works = MyDomainClass.getDeclaredField("declaredFieldName").genericType 
// is there a way to do this without adding it to the domain class? 
Type needed = someAPI(MyDomainClass,"unDeclaredFieldName") 

回答

1

檢查輸出逆向工程插件正在使用的hibernate tools。具體來說,它會創建一個DatabaseCollector

DatabaseCollector readDatabaseSchema(String catalog, String schema) { 
    catalog = catalog ?: settings.defaultCatalogName 
    schema = schema ?: settings.defaultSchemaName 

    JDBCReader reader = JDBCReaderFactory.newJDBCReader(cfg.properties, settings,revengStrategy, cfg.serviceRegistry) 
    DatabaseCollector dbs = new MappingsDatabaseCollector(mappings, reader.metaDataDialect) 
    reader.readDatabaseSchema dbs, catalog, schema, new ReverseEngineerProgressListener() 
    dbs 
}