[Bug #1108] Fix bug
There shouldn't be cascade from order element to labels because labels are shared among orders. Due to this OptimistLockingExceptions were being caused. Now the newly created label is explicitly saved instead of relaying in the cascading behavior. FEA: ItEr75S04BugFixing
This commit is contained in:
parent
deccff1d56
commit
11bdceedc5
3 changed files with 19 additions and 14 deletions
|
|
@ -26,8 +26,7 @@
|
|||
<one-to-many class="org.navalplanner.business.advance.entities.DirectAdvanceAssignment" />
|
||||
</set>
|
||||
|
||||
<!-- Assess many-to-many bidireccional -->
|
||||
<set name="labels" table="order_element_label" cascade="save-update">
|
||||
<set name="labels" table="order_element_label" cascade="none">
|
||||
<key column="order_element_id" not-null="true"/>
|
||||
<many-to-many column="label_id" class="org.navalplanner.business.labels.entities.Label"/>
|
||||
</set>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.common.IAdHocTransactionService;
|
||||
import org.navalplanner.business.common.IOnTransaction;
|
||||
import org.navalplanner.business.labels.daos.ILabelDAO;
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
|
|
@ -41,6 +43,9 @@ public abstract class AssignedLabelsModel<T> implements IAssignedLabelsModel<T>
|
|||
|
||||
private T element;
|
||||
|
||||
@Autowired
|
||||
private IAdHocTransactionService adHocTransactionService;
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public void init(T element) {
|
||||
this.element = element;
|
||||
|
|
@ -121,9 +126,19 @@ public abstract class AssignedLabelsModel<T> implements IAssignedLabelsModel<T>
|
|||
return result;
|
||||
}
|
||||
|
||||
public Label createLabel(String labelName, LabelType labelType) {
|
||||
Label label = Label.create(labelName);
|
||||
label.setType(labelType);
|
||||
public Label createLabel(final String labelName,
|
||||
final LabelType labelType) {
|
||||
Label label = adHocTransactionService
|
||||
.runOnAnotherTransaction(new IOnTransaction<Label>() {
|
||||
@Override
|
||||
public Label execute() {
|
||||
Label label = Label.create(labelName);
|
||||
label.setType(labelType);
|
||||
labelDAO.save(label);
|
||||
return label;
|
||||
}
|
||||
});
|
||||
label.dontPoseAsTransientObjectAnymore();
|
||||
addLabelToConversation(label);
|
||||
return label;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.labels.entities.Label;
|
||||
import org.navalplanner.business.labels.entities.LabelType;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.web.orders.IOrderModel;
|
||||
|
|
@ -64,14 +63,6 @@ public class AssignedLabelsToOrderElementModel extends
|
|||
return new ArrayList<Label>(orderElement.getLabels());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Label createLabel(String labelName, LabelType labelType) {
|
||||
Label label = Label.create(labelName);
|
||||
label.setType(labelType);
|
||||
orderModel.addLabel(label);
|
||||
return label;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOrderModel(IOrderModel orderModel) {
|
||||
this.orderModel = orderModel;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue