Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/main/java/simpaths/data/startingpop/DataParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,11 @@ private static void parse(String inputFileLocation, String inputFileName, Connec
+ "ALTER TABLE " + personTable + " ADD COLUMN prid INT DEFAULT 0;"
+ "ALTER TABLE " + personTable + " ALTER COLUMN idhh RENAME TO idhousehold;"

//Re-order by id
+ "CREATE INDEX IF NOT EXISTS idx_" + personTable + "_bukey ON " + personTable + " (buid, butime, burun, prid);"
+ "CREATE INDEX IF NOT EXISTS idx_" + personTable + "_idhousehold ON " + personTable + " (idhousehold);"


//Re-order by id
+ "SELECT * FROM " + personTable + " ORDER BY id;"
);

Expand Down
27 changes: 14 additions & 13 deletions src/main/java/simpaths/model/SimPathsModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -3359,7 +3359,8 @@ private LifetimeIncomeImputation getLifetimeIncomes(int year) {
EntityManager em = Persistence.createEntityManagerFactory("lifetime-incomes", propertyMap).createEntityManager();
txn = em.getTransaction();
txn.begin();
String query = "SELECT DISTINCT cohort FROM BirthCohort cohort LEFT JOIN FETCH cohort.individuals individuals LEFT JOIN FETCH individuals.incomes incomes";
String query = "SELECT DISTINCT cohort FROM BirthCohort cohort";
// String query = "SELECT DISTINCT cohort FROM BirthCohort cohort LEFT JOIN FETCH cohort.individuals individuals LEFT JOIN FETCH individuals.incomes incomes";
System.out.println("Submitting SQL query");
log.info("Submitting SQL query: " + query);
List<BirthCohort> cohorts = em.createQuery(query).getResultList();
Expand Down Expand Up @@ -3387,7 +3388,7 @@ private Processed getProcessed() {
private Processed getProcessed(Country country, int startYear, int popSize, boolean ignoreTargetsAtPopulationLoad) {

Processed processed = null;
//Processed processed_return = null;
Processed processed_return = null;

EntityTransaction txn = null;
try {
Expand All @@ -3398,8 +3399,8 @@ private Processed getProcessed(Country country, int startYear, int popSize, bool
EntityManager em = Persistence.createEntityManagerFactory("starting-population", propertyMap).createEntityManager();
txn = em.getTransaction();
txn.begin();
String query = "SELECT DISTINCT processed FROM Processed processed LEFT JOIN FETCH processed.households households LEFT JOIN FETCH households.benefitUnits benefitUnits LEFT JOIN FETCH benefitUnits.members members WHERE processed.startYear = " + startYear + " AND processed.popSize = " + popSize + " AND processed.country = " + country + " AND processed.noTargets = " + ignoreTargetsAtPopulationLoad + " ORDER BY households.key.id";
// String query = "SELECT processed FROM Processed processed WHERE processed.startYear = " + startYear + " AND processed.popSize = " + popSize + " AND processed.country = " + country + " AND processed.noTargets = " + ignoreTargetsAtPopulationLoad;
// String query = "SELECT DISTINCT processed FROM Processed processed LEFT JOIN FETCH processed.households households LEFT JOIN FETCH households.benefitUnits benefitUnits LEFT JOIN FETCH benefitUnits.members members WHERE processed.startYear = " + startYear + " AND processed.popSize = " + popSize + " AND processed.country = " + country + " AND processed.noTargets = " + ignoreTargetsAtPopulationLoad + " ORDER BY households.key.id";
String query = "SELECT processed FROM Processed processed WHERE processed.startYear = " + startYear + " AND processed.popSize = " + popSize + " AND processed.country = " + country + " AND processed.noTargets = " + ignoreTargetsAtPopulationLoad;
log.info("Submitting SQL query: " + query);

List<Processed> processedList = em.createQuery(query).getResultList();
Expand All @@ -3412,13 +3413,13 @@ private Processed getProcessed(Country country, int startYear, int popSize, bool
processed.resetDependents();

// // Now fetch households for THIS specific Processed instance only
// processed_return = em.createQuery(
// "SELECT p FROM Processed p LEFT JOIN FETCH p.households h WHERE p = :proc ORDER BY h.key.id",
// Processed.class)
// .setParameter("proc", processed)
// .getSingleResult();
//
// processed_return.resetDependents();
processed_return = em.createQuery(
"SELECT p FROM Processed p LEFT JOIN FETCH p.households h WHERE p = :proc ORDER BY h.key.id",
Processed.class)
.setParameter("proc", processed)
.getSingleResult();

processed_return.resetDependents();
}

// close database connection
Expand Down Expand Up @@ -3446,8 +3447,8 @@ private List<Household> loadStartingPopulation() {
EntityManager em = Persistence.createEntityManagerFactory("starting-population", propertyMap).createEntityManager();
txn = em.getTransaction();
txn.begin();
// String query = "SELECT households FROM Household households";
String query = "SELECT DISTINCT households FROM Household households LEFT JOIN FETCH households.benefitUnits benefitUnits LEFT JOIN FETCH benefitUnits.members members";
String query = "SELECT households FROM Household households";
// String query = "SELECT DISTINCT households FROM Household households LEFT JOIN FETCH households.benefitUnits benefitUnits LEFT JOIN FETCH benefitUnits.members members";
log.info("Submitting SQL query: " + query);
households = em.createQuery(query).getResultList();
log.info("Query complete");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
public class AnnualIncome implements IDoubleSource {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", unique = true, nullable = false) private Long id;
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.REFRESH)
@ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.REFRESH)
@JoinColumns({
@JoinColumn(name = "individual_id", referencedColumnName = "id")
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class BirthCohort {
* ATTRIBUTES
*/
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", unique = true, nullable = false) private Long id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "cohort")
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "cohort")
@OrderBy("id ASC")
private Set<Individual> individuals = new LinkedHashSet<>();

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/simpaths/model/lifetime_incomes/Individual.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ public class Individual implements IDoubleSource {
* ATTRIBUTES
*/
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", unique = true, nullable = false) private Long id;
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.REFRESH)
@ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.REFRESH)
@JoinColumns({
@JoinColumn(name = "cohort_id", referencedColumnName = "id")
})
private BirthCohort cohort;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "individual")
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "individual")
@OrderBy("id ASC")
private Set<AnnualIncome> incomes = new LinkedHashSet<>();
@OneToMany(fetch = FetchType.EAGER, mappedBy = "ltIncomeDonor")
@OneToMany(fetch = FetchType.LAZY, mappedBy = "ltIncomeDonor")
private Set<Person> persons = new LinkedHashSet<>();

@Transient int year;
Expand Down