diff --git a/CHANGELOG.md b/CHANGELOG.md index a744c76cc738e76a01ddfe886d2f9a4792b10b1c..5fca5f27589581a503cec2c90a6334e4c9fe1201 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * `FIND ENTITY <ID> is broken`. [linkahead-server#323](https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/323) +* Unknown Server Error when inserting an Entity. + [linkahead-mariadbbackend](https://gitlab.indiscale.com/caosdb/src/caosdb-mysqlbackend/-/issues/48) ### Security diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java index 18c994e454a75bb17ea1e69777778d9592e18eab..5383de9b8271979e46053d7713d70973fba9eb46 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java @@ -107,20 +107,15 @@ public class DatabaseUtils { final List<Property> stage1Inserts, Deque<EntityID> replacementIds, EntityInterface entity) { - Map<String, EntityInterface> replacements = new HashMap<>(); for (final Property p : stage1Inserts) { if (p instanceof Replacement) { if (!p.hasId() || p.getId().isTemporary()) { EntityID replacementId = replacementIds.pop(); - replacements.put(replacementId.toString(), p); ((Replacement) p).setReplacementId(replacementId); } } - } - - for (final Property p : stage1Inserts) { if (p.hasProperties()) { - if (p instanceof Replacement && ((Replacement) p).isState2Replacement()) { + if (p instanceof Replacement && ((Replacement) p).isStage2Replacement()) { stage2Inserts.add(((Replacement) p).replacement); } for (Property subP : p.getProperties()) { @@ -148,7 +143,6 @@ public class DatabaseUtils { subP.setDomain(p); if (subP.hasProperties()) { Replacement r = new Replacement(subP); - r.replacement.setDomain(p); r.setStage2Replacement(true); stage1Inserts.add(r); processSubPropertiesStage1(stage1Inserts, r); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java index fbe2f57e1cdc7868dac239313f7579011e23e868..c672c0eae79bc2209ce465a01b8947c64b58dfa5 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java @@ -41,7 +41,7 @@ enum ReplacementStatus implements StatementStatusInterface { public class Replacement extends Property { public Property replacement; - private boolean state2Replacement; + private boolean stage2Replacement; @Override public EntityID getId() { @@ -61,7 +61,7 @@ public class Replacement extends Property { super(p); replacement = new Property(new RetrieveEntity()); - replacement.setDomain(p); + replacement.setDomain(p.getDomainEntity()); replacement.setId(new EntityID()); replacement.setStatementStatus(ReplacementStatus.REPLACEMENT); replacement.setValue(new ReferenceValue(p.getId())); @@ -69,10 +69,10 @@ public class Replacement extends Property { } public void setStage2Replacement(boolean t) { - this.state2Replacement = t; + this.stage2Replacement = t; } - public boolean isState2Replacement() { - return state2Replacement; + public boolean isStage2Replacement() { + return stage2Replacement; } }