[hibernate-issues] [Hibernate-JIRA] Commented: (ANN-381) Make possible to specify an @EmbeddedId's field in a @OneToMany's mappedBy property

Brice Laurencin (JIRA) noreply at atlassian.com
Fri Jul 31 10:11:13 EDT 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/ANN-381?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33684#action_33684 ] 

Brice Laurencin commented on ANN-381:
-------------------------------------

I can't get this to work.

I get an NPE: 
java.lang.NullPointerException
	at org.hibernate.cfg.annotations.CollectionBinder.bindManytoManyInverseFk(CollectionBinder.java:1370)
	at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1298)
	at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:602)
	at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:543)

here is the mapping:

@Entity
public class Pool {

	@Id
	@Column(name = "PK_POOL", unique = true, nullable = false, length = 8)
	private String id;

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "id.admin")
	private Set<PoolAdministrator> adminPools = new HashSet<PoolAdministrator>(0);
}

@Entity
@Table(name = "ADMIN_POOL")
public class PoolAdministrator {

	@EmbeddedId
	private PoolAdministratorId id;
}

@Embeddable
public class PoolAdministratorId {

	@ManyToOne(fetch = FetchType.EAGER,optional=false)
	@JoinColumn(name = "FK_POOL")
	private Pool pool;
}


The exception ocures here:
property.getPersistentClass().getIdentifier(). Property.getPersistentClass() gives null, where it might give Pool, am I wrong?

> Make possible to specify an @EmbeddedId's field in a @OneToMany's mappedBy property
> -----------------------------------------------------------------------------------
>
>                 Key: ANN-381
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-381
>             Project: Hibernate Annotations
>          Issue Type: Improvement
>          Components: binder
>         Environment: Hibernate's annotations packaged in JBoss EJB 3.0 RC8- FD
> Microsoft SQL Server 2000
>            Reporter: Pierre Fourès
>             Fix For: 3.2.0.cr2
>
>
> As described in hibernate forum (http://forum.hibernate.org/viewtopic.php?t=960763) and discussed with Emmanuel, it would be very nice to be able to specify in an @OneToMany's mappedBy property the field of an @EmbeddedId.
> For example, i would like to be able run this example :
> @Entity
> public class Card {
>    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="primaryKey.card")
>    private Set<CardField> fields; 
> }
> @Entity
> public class CardField implements Field {
>    @EmbeddedId
>    private PrimaryKey primaryKey = new PrimaryKey();
>    
>    @Embeddable
>    class PrimaryKey implements Serializable {
>       @ManyToOne(optional = false)
>       private Card card;
>       
>       @ManyToOne(optional = false)
>       private Key key;
>    }
> }
> @Entity
> public class Key {}

-- 
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