|
|
Re: NullPointerException for all non Embedded classes [message #385232 is a reply to message #385186] |
Tue, 13 January 2009 15:16 |
Tim Kaltenbrunner Messages: 7 Registered: July 2009 |
Junior Member |
|
|
As an example you can take the following hierarchy:
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class ADMTop<TADMDataContainer extends IADMDataContainer,
TADMObjectHandleManager extends IADMObjectHandleManager>
implements IADMTop<TADMDataContainer, TADMObjectHandleManager>,
StoreCallback {
private static Logger LOGGER = Logger.getLogger(ADMTop.class);
/**
* A id to compare the object with the version contained in the
database
*/
@Id
@javax.persistence.TableGenerator(
name="JPA_GEN",
table="JDO_SEQUENCE",
pkColumnName = "ID",
valueColumnName = "SEQUENCE_VALUE",
pkColumnValue="0",
allocationSize=200
)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "JPA_GEN")
private int JDOID;
/**
* The objects version field. It is increased by the persistence
implementation
* every time the object is changed
*/
@Column(name = "JDOVERSION")
private Long jdoVersion;
...
@MappedSuperclass
public abstract class ADMObjectImpl<T extends IADMDataContainer, X extends
IADMObjectHandleManager>
extends ADMTop<T, X>
implements IADMObject<T, X>
...
@MappedSuperclass
public abstract class OParameterizedADMObjectImpl<T extends
IADMDataContainer, X extends IADMObjectHandleManager>
extends ADMObjectImpl<T, X> implements IOParameterizedADMObject<T,
X>, IOParameterContext {
...
public abstract class AbstractProjectModel<P extends IRailroadModel>
extends
OParameterizedADMObjectImpl<Project,
ProjectADMObjectHandleManager> implements IProjectModel<P> {
...
@Entity
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Timetable<TTimetableEntry extends TimetableEntry, TTrain
extends Train>
extends AbstractProjectModel<TTrain> implements
ITimetable<TTimetableEntry, TTrain>, Cloneable, FastReads {
// Backpointer
@OneToOne(targetEntity = Train.class,fetch=FetchType.LAZY)
@JoinColumn(name = "TRAIN_JDOID")
private TTrain train;
@OneToMany(cascade = CascadeType.ALL, targetEntity =
TimetableEntry.class, fetch=FetchType.EAGER)
@IndexColumn(name = "ENTRIES_ORDER", base = 0)
@JoinColumn(name = "TIMETABLE_JDOID")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
private List<TTimetableEntry> entries = new
ArrayList<TTimetableEntry>();
...
I am migrating a Project which uses Hibernate status quo. I am very sorry
that I have only classes within these inheritance hierarchy.
In the posted example the inheritance type should not be a problem because
all the classes Timetable is deriving from are either mapped superclasses
or no entities.
EclipseLink throws the NullPointerException for all classes which arent
Embeddable in our Project.
Cheers Tim
|
|
|
Re: NullPointerException for all non Embedded classes [message #385236 is a reply to message #385232] |
Tue, 13 January 2009 18:32 |
Guy Pelletier Messages: 19 Registered: July 2009 |
Junior Member |
|
|
Tim Kaltenbrunner wrote:
> As an example you can take the following hierarchy:
> @MappedSuperclass
> @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
> public abstract class ADMTop<TADMDataContainer extends IADMDataContainer,
> TADMObjectHandleManager extends IADMObjectHandleManager>
> implements IADMTop<TADMDataContainer, TADMObjectHandleManager>,
> StoreCallback {
> private static Logger LOGGER = Logger.getLogger(ADMTop.class);
> /**
> * A id to compare the object with the version contained in the
> database
> */
> @Id
> @javax.persistence.TableGenerator(
> name="JPA_GEN",
> table="JDO_SEQUENCE",
> pkColumnName = "ID",
> valueColumnName = "SEQUENCE_VALUE",
> pkColumnValue="0",
> allocationSize=200
> )
> @GeneratedValue(strategy = GenerationType.TABLE, generator = "JPA_GEN")
> private int JDOID;
> /**
> * The objects version field. It is increased by the persistence
> implementation
> * every time the object is changed
> */
> @Column(name = "JDOVERSION")
> private Long jdoVersion;
> ...
> @MappedSuperclass
> public abstract class ADMObjectImpl<T extends IADMDataContainer, X extends
> IADMObjectHandleManager>
> extends ADMTop<T, X>
> implements IADMObject<T, X>
> ...
> @MappedSuperclass
> public abstract class OParameterizedADMObjectImpl<T extends
> IADMDataContainer, X extends IADMObjectHandleManager>
> extends ADMObjectImpl<T, X> implements IOParameterizedADMObject<T,
> X>, IOParameterContext {
> ...
> public abstract class AbstractProjectModel<P extends IRailroadModel>
> extends
> OParameterizedADMObjectImpl<Project,
> ProjectADMObjectHandleManager> implements IProjectModel<P> {
> ...
> @Entity
> @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
> public class Timetable<TTimetableEntry extends TimetableEntry, TTrain
> extends Train>
> extends AbstractProjectModel<TTrain> implements
> ITimetable<TTimetableEntry, TTrain>, Cloneable, FastReads {
> // Backpointer
> @OneToOne(targetEntity = Train.class,fetch=FetchType.LAZY)
> @JoinColumn(name = "TRAIN_JDOID")
> private TTrain train;
> @OneToMany(cascade = CascadeType.ALL, targetEntity =
> TimetableEntry.class, fetch=FetchType.EAGER)
> @IndexColumn(name = "ENTRIES_ORDER", base = 0)
> @JoinColumn(name = "TIMETABLE_JDOID")
> @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
> private List<TTimetableEntry> entries = new
> ArrayList<TTimetableEntry>();
> ...
> I am migrating a Project which uses Hibernate status quo. I am very sorry
> that I have only classes within these inheritance hierarchy.
> In the posted example the inheritance type should not be a problem because
> all the classes Timetable is deriving from are either mapped superclasses
> or no entities.
> EclipseLink throws the NullPointerException for all classes which arent
> Embeddable in our Project.
> Cheers Tim
The @Inheritance strategy should not be specified on the MappedSuperclass,
it should be defined on the @Entity itself.
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04208 seconds