Hi members of this forum: I have this situation - a Scenario entity comprised of many Result entities. And vice-versa.
I then add the first result to a sortedset, using Scenario.runScenario(). However when i add the second result object, in Scenario.adjustResult(), the first one is overwritten. Thanks for any help on this issue, Eder ----------- Scenario.java " public class Scenario implements Comparable<Scenario> { public String title() { return getDescription(); } @Column(allowsNull = "false") @Property() @Getter @Setter private String description; @Column(allowsNull = "false") @Property() @Getter @Setter private int simulationYear; @Column(allowsNull = "false") @Property() @Getter @Setter private ModelCategory modelCategory; // @Property(hidden = Where.ANYWHERE) @Column(allowsNull = "true") @Property() @Getter @Setter private Result budget; @Persistent(table = "ScenarioResults") @Join(column = "scenario_id") // @Element(column = "res_id") @Element(column = "result_id") @Collection() @Getter @Setter @CollectionLayout(render = RenderType.EAGERLY) private SortedSet<Result> actuals = new TreeSet<Result>(); .... public Scenario importSeihan( @Parameter(fileAccept = ".xlsx") @ParameterLayout(named="Excel spreadsheet") final Blob spreadsheet){ .... getBudget().getCords().add(qitem); .... } @Action() public Result runScenario(){ getActuals().add(getBudget()); return getBudget(); } @Action() public Result adjustResult() { Date dNow = new Date(); SimpleDateFormat ft = new SimpleDateFormat ("dd-MMMM-yyyy-HH:mm"); /*final*/ Result adj = getBudget(); String descr = getDescription() + "_adjust_" + ft.format(dNow) + "_[optional description]"; adj.setDescription(descr); adj.setStatus(AdjustStatus.valueOf("InProgress").ordinal()); getActuals().add(adj); return resultRepo.findByDescription(descr); } @Override public int compareTo(final Scenario other) { return org.apache.isis.applib.util.ObjectContracts.compare(this, other, "description"); } @Override public String toString() { return org.apache.isis.applib.util.ObjectContracts.toString(this, "description"); } @javax.inject.Inject private ResultRepository resultRepo; } " ScenarioRepository.java " public class ScenarioRepository { .... @Programmatic public Scenario create( final String description, final int simulationYear, final ModelCategory modelcat) { final TitleBuffer buf = new TitleBuffer(); Date dNow = new Date(); SimpleDateFormat ft = new SimpleDateFormat ("dd-MMMM-yyyy-HH:mm"); buf.append("SimYear-" + simulationYear + "_" + modelcat + "_Created-"); buf.append(ft.format(dNow) + "_"); buf.append(description); final Scenario scenario = container.newTransientInstance(Scenario.class); scenario.setDescription(buf.toString()); scenario.setSimulationYear(simulationYear); scenario.setModelCategory(modelcat); scenario.setBudget( resultRepository.create( buf.toString() + " - Analysis Results", simulationYear, AdjustStatus.valueOf("Created").ordinal())); container.persistIfNotAlready(scenario); return scenario; } @Inject ResultRepository resultRepository; } " Result.java " public class Result implements Comparable<Result> { @Title @Column(allowsNull = "false") @Property(maxLength = 120) @Getter @Setter private String description; public String getDescription(){ return description; } @Column(allowsNull = "false") @Property() @Getter @Setter private int simulationYear; @Column(allowsNull = "false") @Property() @Getter @Setter private int status; @CollectionLayout(render = RenderType.EAGERLY, named = "Power Cord") private SortedSet<QuotaItem> cords = new TreeSet<QuotaItem>(); @Collection() public SortedSet<QuotaItem> getCords() { return cords; } public void setCords( final SortedSet<QuotaItem> obj) { this.cords = obj; } } ResultRepository.java " public class ResultRepository { @Programmatic public Result create( final String description, final int simulationYear, final int status ) { final ComponentSeihan componentSeihan = container.newTransientInstance(ComponentSeihan.class); componentSeihan.setDescription(description); componentSeihan.setSimulationYear(simulationYear); componentSeihan.setStatus(status); return componentSeihan; } } " ----