我想澄清是否可以通過Hibernate從JPA實體創建Map<String, Object>
。我的意思是可以將持久對象(實體)轉換爲包含所有實體屬性作爲鍵和屬性值作爲值的映射。我明白,可以通過Reflections檢索屬性,但我無法弄清楚如何使用適當的值映射它。我發現只有一個解決方案,它使用Spring的JdbcTemplate,但在我的情況下它不是一個選項。如果有人有可能的解決方案,請讓我知道。先謝謝你。映射實體<String,Object>
0
A
回答
1
如果您的實體遵循其所有屬性的JavaBean命名約定,則可以在Apache BeanUtil庫的幫助下通過反射訪問屬性。
第一步:將您的實體包裝在WrapDynaBean
對象中。
第二步:創建一個DynaBeanPropertyMapDecorator
,進一步包裝DynaBean。
第三步:就是這樣。 DynaBeanPropertyMapDecorator
工具Map<String, Object>
所以你的工作在那裏完成。原始對象上的getFoo()
現在可以通過decorator.get("foo")
找到。 (請注意,您在這裏失去了類型安全的,但你並索要Map<String, Object>
...)
1
你可以嘗試使用@Converter如下
@Entity
public class SomeEntity{
@Id
//...
@Convert(converter = MyConverter.class)
Map<String,Object> map;
}
,並建立您的轉換器,如你希望例如轉換爲/從json
@Converter
public class MyConverter implements
AttributeConverter<Map<String, Object>, String> {
@Override
public String convertToDatabaseColumn(Map<String, Object> map) {
return jsonStr(map);
}
@Override
public Map<String, Object> convertToEntityAttribute(String s) {
return mapFromJson(s);
}
相關問題
- 1. Hibernate映射映射<String,String>
- 2. 對映射值長度的JPA映射<String,String>限制?
- 3. JPA Map <String,String []>映射
- 4. 實體映射
- 5. 映射實體
- 6. 映射實體
- 7. NHibernate實體映射
- 8. JPA映射實體
- 9. JPA實體映射
- 10. RestKit實體映射
- 11. 實體未映射
- 12. 映射弱實體
- 13. 使用JPA批註在Hibernate中映射java.util.map <實體,實體
- 14. Orika映射器 - 映射到列表<String>
- 15. 映射映射<String,Foo>在休眠
- 16. 映射的ICollection <string>流利API
- 17. Hibernate如何映射Map <Object,String>
- 18. 如何映射Map <String,int []>?
- 19. 映射對象與映射實體
- 20. RestKit實體映射和父實體映射
- 21. 實體類String [] vs列表<String>
- 22. 如何使用KeyValueMapper將輸入KStream <String,String>映射到<String,CarClass>?
- 23. 如何用Fluent NHibernate的類映射映射IDictionary <string,string>並測試該映射?
- 24. 實體框架:一個<->許多<->一個映射?
- 25. Doctrine2實體如何映射到實體
- 26. DDD,實體框架和實體映射
- 27. 實體框架 - 實體映射問題
- 28. symfony3逆實體映射慢
- 29. 實體框架映射
- 30. 註冊實體映射
謝謝。這聽起來很完美,我會嘗試。 – aime