[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
Re: [eclipselink-users] Can I persist a Map containing a List as Value
 | 
Hi
I tryed this with the following code:
@Entity
public class TestEntity {
	@Id @GeneratedValue private int id;
	@OneToMany(cascade = { CascadeType.ALL })
	@BasicMap(fetch = FetchType.EAGER, keyColumn = @Column(name = "key"),
			valueColumn = @Column(name = "value"))
	@CollectionTable(name = "map")
	private Map<String, TestHolder> map;
	public void setMap(Map<String, TestHolder> map) {
		this.map = map;
	}
	public Map<String, TestHolder> getMap() {
		return map;
	}
}
@Entity
public class TestHolder {
	@Id @GeneratedValue private int id;
	private String value;
	public void setValue(String value) {
		this.value = value;
	}
	public String getValue() {
		return value;
	}
}
private void test() {
	factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
	EntityManager em = factory.createEntityManager();
	em.getTransaction().begin();
	TestEntity testEntity = new TestEntity();
	Map<String, TestHolder> map = new HashMap<String, TestHolder>();
	TestHolder value = new TestHolder("value");
	map.put("key", value );
	testEntity.setMap(map );
	em.persist(testEntity);
	em.getTransaction().commit();
	em.close();
}
Definition of table map:
CREATE TABLE MAP
(
  ID     NUMBER(10)                             NOT NULL,
  VALUE  VARCHAR2(255 BYTE),
  KEY    VARCHAR2(255 BYTE)
)
Then I get the error message:
Internal Exception: java.sql.SQLException: Ungültiger Spaltentyp
Error Code: 17004
Call: INSERT INTO map (ID, value, key) VALUES (?, ?, ?)
	bind => [1, bom.TestHolder@e34726, key]
How can I store the object as entity?
Thanks a lot!
Regards Adrian
Zitat von Tom Ware <tom.ware@xxxxxxxxxx>:
You will likely need an extra object to do this.  Something like:
private Map<String, ListHolder> instructions;
@Entity
public class ListHolder{
   @id
   private int id;
   private List instructions;
...
}
It should be pretty easy to write some business methods that make
this mapping
transparent to the users of the API.
-Tom
adi@xxxxxxxxxxxx wrote:
Hi
I persisted a map like this:
	private Map<String, String> instructions;
How can I persist a map that contains a List as value?
	private Map<String, List<String>> instructions;
Thanks a lot!
Regards Adrian
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users