0
我正嘗試使用Hibernate將hashmap的值寫入數據庫。使用Hibernate向數據庫寫入HashMap
MY POJO類 包org.rahul;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.MapKeyColumn;
import javax.persistence.Table;
@Entity
@Table(name = "hash")
public class HashMapExample {
@Id
@GeneratedValue
private int id;
@ElementCollection
@MapKeyColumn(name = "key_key")
@JoinTable(name = "example_attributes", joinColumns =
@JoinColumn(name"example_id"))
private Map<String, String> map = new HashMap<String, String>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
}
主類
package org.rahul.hibernate;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.rahul.HashMapExample;
public class HashMapMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SessionFactory sessionFactory = new AnnotationConfiguration()
.configure("hibernate.cfg.xml").buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
String name = "Rahul";
String company = "Memoir";
Map<String, String> map = new HashMap<String, String>();
map.put(name, company);
Map<String, String> map1 = new HashMap<String, String>();
map1.put("XYZ", "ABC");
HashMapExample hash = new HashMapExample();
HashMapExample hash1 = new HashMapExample();
// hash.setId(2);
hash1.setMap(map);
hash.setMap(map1);
session.getTransaction();
session.save(hash);
session.save(hash1);
session.getTransaction().commit();
}
}
我期望獲得表有包含密鑰值對一列,但,在我得到的鍵值不同的列。
example_attribut table description :
CREATE TABLE `example_attributes`
(
`example_id` INT(11) NOT NULL,
`map` VARCHAR(255) DEFAULT NULL,
`key_key` VARCHAR(255) NOT NULL,
PRIMARY KEY (`example_id`, `key_key`),
KEY `fkea50c74c5cd44e54` (`example_id`),
CONSTRAINT `fkea50c74c5cd44e54` FOREIGN KEY (`example_id`) REFERENCES
`hash` (`id`)
)
engine=innodb
DEFAULT charset=utf8
哈希表說明:
CREATE TABLE `hash` (
`id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
爲什麼我無法描述字段映射和key_key作爲HashMap中我希望他們像鍵值對單個字段。誰能幫幫我嗎 ?
你能幫我把這個添加到我的代碼中嗎? – Newbie
@Newbie在我這樣做之前,你打算對這些數據進行查詢嗎?地圖數據是? – Woot4Moo
是的,我會嘗試查詢同時具有鍵和值的列。我們能做到嗎? – Newbie