OK, I should have tried that, but should I need to? Surely the scope of the concrete child class overrides that, it just specifies which concrete classes can extend it?
On Wed, Sep 2, 2015 at 4:44 AM, Jeroen van der Wal <[email protected]> wrote: > If you make your abstract class public it should work fine ;-) > > Cheers, > > Jeroen > > On 1 September 2015 at 15:12, Stephen Cameron <[email protected]> > wrote: > > > Here a two scenarios each with a Parent and Child Type, they should give > > the same result > > > > 1. Concrete Parent Type > > > > @PersistenceCapable() > > public class ConcreteParentType { > > > > @PrimaryKey() > > @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT) > > private Long id; > > > > private String name; > > > > @Column(allowsNull="true") > > @MemberOrder(sequence = "1") > > public String getName() { > > return name; > > } > > > > public void setName(final String name) { > > this.name = name; > > } > > > > } > > > > @PersistenceCapable() > > public class ChildTypeOfConcreteParentType extends ConcreteParentType { > > > > > > private String description; > > > > @Column(allowsNull="true") > > @MemberOrder(sequence = "2") > > public String getDescription() { > > return description; > > } > > > > public void setDescription(final String description) { > > this.description = description; > > } > > > > } > > > > 2. Abstract Parent Type > > > > @PersistenceCapable() > > @Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE) > > abstract class AbstractParentType { > > > > @PrimaryKey() > > @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT) > > private Long id; > > > > private String name; > > > > @Column(allowsNull="true") > > @MemberOrder(sequence = "1") > > public String getName() { > > return name; > > } > > > > public void setName(final String name) { > > this.name = name; > > } > > > > } > > > > @PersistenceCapable() > > public class ChildTypeOfAbstractParentType extends AbstractParentType { > > > > private String description; > > > > @Column(allowsNull="true") > > @MemberOrder(sequence = "2") > > public String getDescription() { > > return description; > > } > > > > public void setDescription(final String description) { > > this.description = description; > > } > > > > } > > > > In the seond scenario the name property doesn't appear, only the > > description. > > > > The DomainService class for testing these two scenarios in the viewer is > > this: > > > > @DomainService(nature=NatureOfService.VIEW_MENU_ONLY) > > @DomainServiceLayout(named = "DataNucleus", menuBar = MenuBar.PRIMARY, > > menuOrder = "100") > > public class Menu { > > > > > > > > public ChildTypeOfConcreteParentType > > createChildTypeOfConcreteParentType() { > > ChildTypeOfConcreteParentType childType = null; > > try { > > childType = > > container.newTransientInstance(ChildTypeOfConcreteParentType.class); > > childType.setName("ChildTypeOfConcreteParentType"); > > childType.setDescription("something descriptive"); > > container.persistIfNotAlready(childType); > > } catch (Exception e) { > > e.printStackTrace(); > > } > > return childType; > > } > > > > public ChildTypeOfAbstractParentType > > createChildTypeOfAbstractParentType() { > > ChildTypeOfAbstractParentType childType = null; > > try { > > childType = > > container.newTransientInstance(ChildTypeOfAbstractParentType.class); > > childType.setName("ChildTypeOfAbstractParentType"); > > childType.setDescription("something descriptive"); > > container.persistIfNotAlready(childType); > > } catch (Exception e) { > > e.printStackTrace(); > > } > > return childType; > > } > > > > > > > > @javax.inject.Inject > > DomainObjectContainer container; > > > > } > > > > > > On Tue, Sep 1, 2015 at 10:42 PM, Stephen Cameron < > > [email protected] > > > wrote: > > > > > Hi Jeroen, just noticed this after sending second update (winge). > > > > > > I'll send a test case now. > > > > > > On Tue, Sep 1, 2015 at 10:29 PM, Jeroen van der Wal < > [email protected] > > > > > > wrote: > > > > > >> Hi Stephen, > > >> > > >> Can you share some code to support your case? > > >> > > >> Cheers, > > >> > > >> Jeroen > > >> > > >> On 1 September 2015 at 12:39, Stephen Cameron < > > [email protected] > > >> > > > >> wrote: > > >> > > >> > Hi, > > >> > > > >> > I've been trying today to find solutions to what seem to be > > Datanucleus > > >> > issues, but without much success. So rather than solve the problems > > >> created > > >> > in my refactoring of my application, which has been too hard > frankly, > > >> I'm > > >> > trying to start afresh with some simple test cases, show these work, > > >> then > > >> > add more complexity till I get where I want to be. > > >> > > > >> > So, I am starting this approach and I immediately have an issue, but > > >> not a > > >> > Datanucleus one, I find that the value properties of an abstract > > parent > > >> > class don't appear in the Wicket viewer, whereas they do if the > parent > > >> > class is concrete. Is this correct and if so what is the reason? > > >> > > > >> > Thanks. > > >> > > > >> > > > > > > > > >
