diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/externalcompanies/entities/ExternalCompanies.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/externalcompanies/entities/ExternalCompanies.hbm.xml
index 0b5d8f24d..1e6a8cc6a 100644
--- a/navalplanner-business/src/main/resources/org/navalplanner/business/externalcompanies/entities/ExternalCompanies.hbm.xml
+++ b/navalplanner-business/src/main/resources/org/navalplanner/business/externalcompanies/entities/ExternalCompanies.hbm.xml
@@ -26,6 +26,8 @@
+
+
diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/externalcompanies/daos/ExternalCompanyDAOTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/externalcompanies/daos/ExternalCompanyDAOTest.java
index aa151a3a3..03ad1ff4a 100644
--- a/navalplanner-business/src/test/java/org/navalplanner/business/test/externalcompanies/daos/ExternalCompanyDAOTest.java
+++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/externalcompanies/daos/ExternalCompanyDAOTest.java
@@ -24,9 +24,12 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE;
import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE;
+import java.util.HashSet;
+import java.util.Set;
import java.util.UUID;
import org.junit.Test;
@@ -37,6 +40,9 @@ import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
+import org.navalplanner.business.users.daos.IUserDAO;
+import org.navalplanner.business.users.entities.User;
+import org.navalplanner.business.users.entities.UserRole;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.NotTransactional;
import org.springframework.test.context.ContextConfiguration;
@@ -58,6 +64,9 @@ public class ExternalCompanyDAOTest {
@Autowired
IExternalCompanyDAO externalCompanyDAO;
+ @Autowired
+ IUserDAO userDAO;
+
@Autowired
private IAdHocTransactionService transactionService;
@@ -89,6 +98,41 @@ public class ExternalCompanyDAOTest {
assertEquals(previous + 1, externalCompanyDAO.list(ExternalCompany.class).size());
}
+ @Test
+ @NotTransactional
+ public void testRelationWithUser() throws InstanceNotFoundException {
+ final User user = createValidUser();
+ final ExternalCompany externalCompany = createValidExternalCompany();
+ externalCompany.setCompanyUser(user);
+
+ IOnTransaction saveEntities = new IOnTransaction() {
+
+ @Override
+ public Void execute() {
+ userDAO.save(user);
+ externalCompanyDAO.save(externalCompany);
+ return null;
+ }
+ };
+ transactionService.runOnTransaction(saveEntities);
+
+ IOnTransaction retrieveEntitiesInOtherTransaction = new IOnTransaction() {
+
+ @Override
+ public Void execute() {
+ try{
+ ExternalCompany retrievedCompany = externalCompanyDAO.find(externalCompany.getId());
+ assertEquals(user.getLoginName(), retrievedCompany.getCompanyUser().getLoginName());
+ }
+ catch (InstanceNotFoundException e) {
+ fail("Unexpected InstanceNotFoundException");
+ }
+ return null;
+ }
+ };
+ transactionService.runOnTransaction(retrieveEntitiesInOtherTransaction);
+ }
+
@Test
public void testFindUniqueByName() throws InstanceNotFoundException {
ExternalCompany externalCompany = createValidExternalCompany();
@@ -153,4 +197,10 @@ public class ExternalCompanyDAOTest {
return ExternalCompany.create(UUID.randomUUID().toString(),
UUID.randomUUID().toString());
}
+
+ private User createValidUser() {
+ Set roles = new HashSet();
+ return User.create(UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), roles);
+ }
}