[hibernate-issues] [Hibernate-JIRA] Resolved: (ANN-491) Collection mapped with javax.persistence.MapKey isn't loaded properly.
Emmanuel Bernard (JIRA)
noreply at atlassian.com
Wed Nov 29 10:26:04 EST 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/ANN-491?page=all ]
Emmanuel Bernard resolved ANN-491:
----------------------------------
Resolution: Cannot Reproduce
Works for me for both this.getVersion() and this.version
I've commited your test
> Collection mapped with javax.persistence.MapKey isn't loaded properly.
> ----------------------------------------------------------------------
>
> Key: ANN-491
> URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-491
> Project: Hibernate Annotations
> Type: Bug
> Versions: 3.2.0.ga
> Reporter: Magnus Heino
> Fix For: 3.2.1
>
>
> http://forum.hibernate.org/viewtopic.php?t=966948
> Add this test to IndexedCollectionTest.java:
> public void testMapKeyLoad() throws Exception {
> Session s;
> Transaction tx;
> s = openSession();
> tx = s.beginTransaction();
> Software hibernate = new Software();
> hibernate.setName( "Hibernate" );
> Version v1 = new Version();
> v1.setCodeName( "HumbaHumba" );
> v1.setNumber( "1.0" );
> v1.setSoftware( hibernate );
> hibernate.addVersion(v1);
> s.persist(hibernate);
> s.persist(v1);
> tx.commit();
> s.clear();
> tx = s.beginTransaction();
> hibernate = (Software) s.get( Software.class, "Hibernate" );
> Version v2 = new Version();
> v2.setCodeName( "HumbaHumba" );
> v2.setNumber( "2.0" );
> v2.setSoftware( hibernate );
> hibernate.addVersion(v2);
> assertEquals("One loaded persisted version, and one just added", 2, hibernate.getVersions().size() );
> tx.commit();
> s.clear();
> tx = s.beginTransaction();
> hibernate = (Software) s.get( Software.class, "Hibernate" );
> for ( Version v : hibernate.getVersions().values() ) {
> s.delete( v );
> }
> s.delete( hibernate );
> tx.commit();
> s.close();
> }
> And modify Software.java to look like this:
> //$Id: Software.java 9795 2006-04-26 06:41:18Z epbernard $
> package org.hibernate.test.annotations.indexcoll;
> import java.util.HashMap;
> import java.util.Map;
> import javax.persistence.Entity;
> import javax.persistence.Id;
> import javax.persistence.MapKey;
> import javax.persistence.OneToMany;
> /**
> * @author Emmanuel Bernard
> */
> @Entity
> public class Software {
> private String name;
> private Map<String, Version> versions;
> public Software() {
> this.versions = new HashMap<String, Version>();
> }
>
> @Id
> public String getName() {
> return name;
> }
> public void setName(String name) {
> this.name = name;
> }
> @OneToMany(mappedBy = "software")
> @MapKey(name = "codeName")
> public Map<String, Version> getVersions() {
> return versions;
> }
> public void setVersions(Map<String, Version> versions) {
> this.versions = versions;
> }
>
> public void addVersion(Version version) {
> this.getVersions().put(version.getCodeName(), version);
> }
> }
> AFAIK addVersion should be able to do this.version.put too if you read the spec, but it doesn't work with the getter as it is now either.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list