Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

@Id ValidationException with EclipseLink

dnedrowJul 13 2008 — edited Jul 15 2008

I've got about 10 classes that I have implemented via EclipseLink annotations that all appear to work fine.

I added a new entity, but now I get the following annotation error when trying to deploy the app in GlassFish...

AbstractAclAddrDst.java

Deploying application in domain failed; Exception [EclipseLink-28018] (Eclipse Persistence Services - 1.0 (Build 1.0 - 20080707)): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [NetConfPU] failed.
Internal Exception: Exception [EclipseLink-7161] (Eclipse Persistence Services - 1.0 (Build 1.0 - 20080707)): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Entity class [class com.foo.ncs.argfrp.jpa.netconf.AclAddrDst] has no primary key specified. It should define either an @Id, @EmbeddedId or an @IdClass. If you have defined PK using any of these annotations then please make sure that you do not have mixed access-type (both fields and properties annotated) in your entity class hierarchy.

So far as I can tell, I've done everything the same for the entities I've constructed that work fine.

Can anyone see a problem with what I have below?

package com.foo.ncs.argfrp.jpa.netconf;

//~--- JDK imports ------------------------------------------------------------

import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.SequenceGenerator;

/**
 * AbstractAclAddrDst entity provides the base persistence definition of the
 * AclAddrDst entity.
 *
 */
@MappedSuperclass public abstract class AbstractAclAddrDst implements java.io.Serializable {

    // Fields
    private Integer      id;
    private FilterAccess filterAccess;
    private Integer      address;

    // Constructors

    /** default constructor */
    public AbstractAclAddrDst() {}

    /** full constructor */
    public AbstractAclAddrDst(Integer id, FilterAccess filterAccess, Integer address) {
        this.id           = id;
        this.filterAccess = filterAccess;
        this.address      = address;
    }

    // Property accessors

    /**
     * Method description
     *
     *
     * @return
     */
    @SequenceGenerator(name = "ACLADDRDST_SEQ", sequenceName = "acl_addr_dst_id_seq")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ACLADDRDST_SEQ")
    @Id @Column(
        name     = "id",
        unique   = true,
        nullable = false
    )
    public Integer getId() {
        return this.id;
    }

    /**
     * Method description
     *
     *
     * @param id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "filter_accessid", nullable = false)
    public FilterAccess getFilterAccess() {
        return this.filterAccess;
    }

    /**
     * Method description
     *
     *
     * @param filterAccess
     */
    public void setFilterAccess(FilterAccess filterAccess) {
        this.filterAccess = filterAccess;
    }

    /**
     * Method description
     *
     *
     * @return
     */
    @Column(name = "address", nullable = false)
    public Integer getAddress() {
        return this.address;
    }

    /**
     * Method description
     *
     *
     * @param address
     */
    public void setAddress(Integer address) {
        this.address = address;
    }
}


//~ Formatted in Sun Code Convention on 2008-07-13

and the concrete class...

AclAddrDst.java

package com.foo.ncs.argfrp.jpa.netconf;

//~--- JDK imports ------------------------------------------------------------

import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * AclAddrDst entity.
 *
 */
@Entity @Table(name = "acl_addr_dst")
public class AclAddrDst extends AbstractAclAddrDst implements java.io.Serializable {

    // Constructors

    /** default constructor */
    public AclAddrDst() {}

    /** full constructor */
    public AclAddrDst(Integer id, FilterAccess filterAccess, Integer address) {
        super(id, filterAccess, address);
    }
}


//~ Formatted in Sun Code Convention on 2008-07-13

Message was edited by:
David Nedrow

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 12 2008
Added on Jul 13 2008
3 comments
2,269 views