openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Vogel" <lars.vo...@googlemail.com>
Subject JPAAnnotations on the instance variable or on the getter
Date Mon, 14 Apr 2008 07:04:16 GMT
Hi,

my understanding so far was that it doesn't matter if I have the annotation
on the instance variable or on the the getter method of the class.

It that true? Because I have an example where I receive a Null pointer
exception if I put the annotation on the instance variable and not on the
getter. Example below. The error occurs during the access of the JobList
variable. The whole project is attached in case someone would like to have a
look. For testing just exchange PersonNew.java with Person.java.

Best regards, Lars

----------

This works:
------------------------------

package datamodel.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Transient;

import org.apache.openjpa.persistence.PersistentCollection;

import datamodel.IPerson;

@Entity
public class PersonNew implements IPerson {
    private String id;
    private String firstName;
    private String lastName;

    private String nonsenseField = "";

    private List<Job> jobList = new ArrayList<Job>();

    private List<String> nickNameList = new ArrayList<String>();

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    public String getId() {
        return id;
    }

    public void setId(String Id) {
        this.id = Id;
    }


    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    // Leave the standard column name of the table
    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Transient
    public String getNonsenseField() {
        return nonsenseField;
    }

    public void setNonsenseField(String nonsenseField) {
        this.nonsenseField = nonsenseField;
    }

    @OneToMany
    public List<Job> getJobsList() {
        return this.jobList;
    }

    public void setJobsList(List<Job> nickName) {
        this.jobList = nickName;
    }

    @PersistentCollection
    @OrderBy
    public List<String> getNickNameList() {
        return nickNameList;
    }

    public void setNickNameList(List<String> nickNameString) {
        this.nickNameList = nickNameString;
    }
}


This results in an error:

package datamodel.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Transient;

import org.apache.openjpa.persistence.PersistentCollection;

import datamodel.IPerson;

@Entity
public class Person implements IPerson {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    private String id;
    private String firstName;
    private String lastName;

    @Transient
    private String nonsenseField = "";
    @OneToMany
    private List<Job> jobList = new ArrayList<Job>();
    @PersistentCollection
    @OrderBy
    private List<String> nickNameList = new ArrayList<String>();


    public String getId() {
        return id;
    }

    public void setId(String Id) {
        this.id = Id;
    }


    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    // Leave the standard column name of the table
    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getNonsenseField() {
        return nonsenseField;
    }

    public void setNonsenseField(String nonsenseField) {
        this.nonsenseField = nonsenseField;
    }


    public List<Job> getJobsList() {
        return this.jobList;
    }

    public void setJobsList(List<Job> nickName) {
        this.jobList = nickName;
    }


    public List<String> getNickNameList() {
        return nickNameList;
    }

    public void setNickNameList(List<String> nickNameString) {
        this.nickNameList = nickNameString;
    }
}

Mime
View raw message