2012-10-25 64 views
0

我在持久類中有一個依賴映射......我在考慮indexed =「true」會導致DN向生成的表上的鍵和值列添加索引,但它似乎完全被忽略。當然,我可以手動添加索引..但是有沒有辦法讓DN通過註釋(首選)或xml爲我執行?將索引添加到datanucleus中的依賴映射中

@Persistent 
@Key(types=String.class,indexed="true",index = "key_idx") 
@Value(types=String.class,dependent="true",indexed="true",index = "value_idx") 
@Join 
private Map<String,String> metadata = new HashMap<>(); 

響應它使用mysql的DN的評論......這裏有相關的記錄,我可以找到和生成的架構...有別的東西,我可以添加到幫助找出我在做什麼DataNucleus將錯?:

DataNucleus.Datastore.Schema:58 - Column "account_metadata.id_oid" added to internal representation of table. 
DataNucleus.Datastore:58 - Field [com.core.data.account.Account.metadata] -> Column(s) [account_metadata.id_oid] using mapping of type "org.datanucleus.store.mapped.mapping.PersistableMapping" (org.datanucleus.store.rdbms.mapping.IntegerRDBMSMapping) 
DataNucleus.Datastore.Schema:58 - Column "account_metadata.`key`" added to internal representation of table. 
DataNucleus.Datastore:58 - Field [com.core.data.account.Account.metadata] -> Column(s) [account_metadata.`key`] using mapping of type "org.datanucleus.store.mapped.mapping.StringMapping" (org.datanucleus.store.rdbms.mapping.VarCharRDBMSMapping) 
DataNucleus.Datastore.Schema:58 - Column "account_metadata.`value`" added to internal representation of table. 
DataNucleus.Datastore:58 - Field [com.core.data.account.Account.metadata] -> Column(s) [account_metadata.`value`] using mapping of type "org.datanucleus.store.mapped.mapping.StringMapping" (org.datanucleus.store.rdbms.mapping.ClobRDBMSMapping) 

DataNucleus.Datastore.Schema:58 - Validating 2 index(es) for table account_metadata 
DataNucleus.Datastore.Schema:58 - Validating 1 foreign key(s) for table account_metadata 
DataNucleus.Datastore.Schema:58 - Validating 1 unique key(s) for table account_metadata 

CREATE TABLE `account_metadata` (
    `id_oid` int(11) NOT NULL, 
    `key` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, 
    `value` mediumtext, 
    PRIMARY KEY (`id_oid`,`key`), 
    KEY `account_metadata_n49` (`id_oid`), 
    CONSTRAINT `account_metadata_fk1` FOREIGN KEY (`id_oid`) REFERENCES `account` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 
+0

很明顯,所有這些都取決於正在使用的數據存儲,並且在運行SchemaTool時會清楚地列在日誌中 – DataNucleus

回答

1

SVN主幹現在支持在其中加入鍵/值的非持久表映射的鍵/值列的索引(以前支持嵌入式鍵/值只)。

相關問題