diff --git a/src/main/java/META-INF/persistence.xml b/src/main/java/META-INF/persistence.xml
index 077d0e17dc..424abfcb82 100644
--- a/src/main/java/META-INF/persistence.xml
+++ b/src/main/java/META-INF/persistence.xml
@@ -9,14 +9,20 @@
 
 	<!-- A JPA Persistence Unit -->
 	<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
+	
 		<provider>org.hibernate.ejb.HibernatePersistence</provider>
-		<class>se.su.dsv.scipro.data.dataobjects.Username</class>
+		
+		<!-- JPA entities must be registered here -->
+				<class>se.su.dsv.scipro.data.dataobjects.Username</class>
 		<class>se.su.dsv.scipro.data.dataobjects.User</class>
 		<class>se.su.dsv.scipro.data.dataobjects.LazyDeletableDomainObject</class>
 		<class>se.su.dsv.scipro.data.dataobjects.Event</class>
 		<class>se.su.dsv.scipro.data.dataobjects.DomainObject</class>
-
-		<!-- JPA entities must be registered here -->
+		<class>se.su.dsv.scipro.data.dataobjects.Student</class>
+		<class>se.su.dsv.scipro.data.dataobjects.Admin</class>
+		<class>se.su.dsv.scipro.data.dataobjects.SysAdmin</class>
+		<class>se.su.dsv.scipro.data.dataobjects.Employee</class>
+		<class>se.su.dsv.scipro.data.dataobjects.Role</class>
 
 		<properties>
 		
@@ -27,6 +33,9 @@
    			<property name="hibernate.cache.use_second_level_cache" value="true" />
    			<property name="hibernate.generate_statistics" value="false" />
 			
+			<!-- DEVELOPMENT VARIABLE, REMOVE FOR PRODUCTION USE -->
+			<property name="hibernate.hbm2ddl.auto" value="update" />
+			
 			<!-- Local mysql test database -->
 			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
 			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>			
@@ -41,17 +50,22 @@
 	<!-- A JPA Persistence Unit used for tests -->
 	<persistence-unit name="testPersistenceUnit" transaction-type="RESOURCE_LOCAL">
 	
+		<provider>org.hibernate.ejb.HibernatePersistence</provider>
+		
 		<!-- This list of persisted Entitys IS NOT updated by eclipes JPA facet,
 		if some tests are failing, then copy paste exact list from the above persistence unit -->
 		
-		<provider>org.hibernate.ejb.HibernatePersistence</provider>
+		<!-- JPA entities must be registered here -->
 		<class>se.su.dsv.scipro.data.dataobjects.Username</class>
 		<class>se.su.dsv.scipro.data.dataobjects.User</class>
 		<class>se.su.dsv.scipro.data.dataobjects.LazyDeletableDomainObject</class>
 		<class>se.su.dsv.scipro.data.dataobjects.Event</class>
 		<class>se.su.dsv.scipro.data.dataobjects.DomainObject</class>
-
-		<!-- JPA entities must be registered here -->
+		<class>se.su.dsv.scipro.data.dataobjects.Student</class>
+		<class>se.su.dsv.scipro.data.dataobjects.Admin</class>
+		<class>se.su.dsv.scipro.data.dataobjects.SysAdmin</class>
+		<class>se.su.dsv.scipro.data.dataobjects.Employee</class>
+		<class>se.su.dsv.scipro.data.dataobjects.Role</class>
 
 		<properties>
 		
@@ -66,7 +80,17 @@
 			<property name="hibernate.hbm2ddl.auto" value="create" />
 			<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"></property>
 			<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:test"></property>
-			<property name="hibernate.show_sql" value="true" />			
+			<property name="hibernate.show_sql" value="true" />
+			
+			<!--
+			<property name="hibernate.hbm2ddl.auto" value="create" />
+			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
+			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>			
+			<property name="hibernate.connection.url" value="jdbc:mysql://localhost/scipro"></property>
+			<property name="hibernate.connection.username" value="root"></property>
+			<property name="hibernate.connection.password" value="martin"></property>
+			<property name="hibernate.c3p0.idle_test_period" value="3600"></property>		
+			-->
 			
 		</properties>
 	</persistence-unit>
diff --git a/src/main/resources/applicationContext.xml b/src/main/resources/applicationContext.xml
index 5c0bf76c56..fdef8a5b0e 100644
--- a/src/main/resources/applicationContext.xml
+++ b/src/main/resources/applicationContext.xml
@@ -29,6 +29,10 @@
 		<property name="entityManagerFactory" ref="entityManagerFactory" />
 	</bean>
 	
+	<bean id="roleDao" class="se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp">
+		<property name="entityManagerFactory" ref="entityManagerFactory" />
+	</bean>
+	
 	<bean class="se.su.dsv.scipro.DataInitialiser" init-method="dataInit">
 		<property name="eventDao" ref="eventDao"></property>
 	</bean>
diff --git a/src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA-context.xml b/src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA-context.xml
new file mode 100644
index 0000000000..e893e8851f
--- /dev/null
+++ b/src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA-context.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
+	default-autowire="byName">
+
+	<bean id="entityManagerFactory"
+		class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
+		<property name="persistenceUnitName" value="testPersistenceUnit" />
+	</bean>
+
+	<!--
+		enable the configuration of transactional behavior based on
+		annotations
+	-->
+	<tx:annotation-driven transaction-manager="transactionManager" />
+
+	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
+		<property name="entityManagerFactory" ref="entityManagerFactory" />
+	</bean>
+
+
+	<bean id="userDao" class="se.su.dsv.scipro.data.dao.jpa.UserDaoJPAImp">
+		<property name="entityManagerFactory" ref="entityManagerFactory" />
+	</bean>
+	<bean id="roleDao" class="se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp">
+		<property name="entityManagerFactory" ref="entityManagerFactory" />
+	</bean>
+	
+	
+
+</beans>
diff --git a/src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA.java b/src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA.java
new file mode 100644
index 0000000000..f1c840d459
--- /dev/null
+++ b/src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA.java
@@ -0,0 +1,147 @@
+package se.su.dsv.scipro.dao.jpa;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+import se.su.dsv.scipro.data.dao.interfaces.RoleDao;
+import se.su.dsv.scipro.data.dao.interfaces.UserDao;
+import se.su.dsv.scipro.data.dataobjects.Admin;
+import se.su.dsv.scipro.data.dataobjects.Student;
+import se.su.dsv.scipro.data.dataobjects.*;
+
+/**
+ * 
+ * @author Martin Peters - mpeters@dsv.su.se
+ *
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration
+public class TestRoleDaoJPA {
+
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private RoleDao roleDao;
+
+	protected User user;
+	
+	protected User deletedUser;
+
+	@Before
+	public void startTransaction()
+	{
+		user = new User();
+		user.setEmailAddress("test@dsv.su.se");
+		user.setIdentifier(new Long(666));
+		user.setFirstName("Test");
+		user.setLastName("Person");
+		user = userDao.save(user);
+				
+		deletedUser = new User();
+		deletedUser.setEmailAddress("testdeleted@dsv.su.se");
+		deletedUser.setIdentifier(new Long(777));
+		deletedUser.setFirstName("Test");
+		deletedUser.setLastName("Person");
+		deletedUser.setDeleted(true);
+		deletedUser = userDao.save(deletedUser);
+
+	}
+
+
+	/**
+	 * Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isAdmin(User)}.
+	 */
+	@Test
+	@Transactional
+	@Rollback
+	public void testAdmin() {
+		
+		Admin a = new Admin();
+		a.setUser(user);
+		Assert.assertFalse(roleDao.isAdmin(user));
+		if(!roleDao.isAdmin(user))
+			roleDao.save(a);
+		
+		Assert.assertTrue(roleDao.isAdmin(user));
+	}
+	
+	/**
+	 * Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isSysadmin(User)}.
+	 */
+	@Test
+	@Transactional
+	@Rollback
+	public void testSysAdmin() {
+		
+		SysAdmin a = new SysAdmin();
+		a.setUser(user);
+		Assert.assertFalse(roleDao.isSysadmin(user));
+		if(!roleDao.isSysadmin(user))
+			roleDao.save(a);
+		
+		Assert.assertTrue(roleDao.isSysadmin(user));
+	}
+	
+	/**
+	 * Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isSysadmin(User)}.
+	 */
+	@Test
+	@Transactional
+	@Rollback
+	public void testEmployee() {
+		
+		Employee e = new Employee();
+		e.setUser(user);
+		Assert.assertFalse(roleDao.isEmployee(user));
+		if(!roleDao.isEmployee(user))
+			roleDao.save(e);
+		
+		Assert.assertTrue(roleDao.isEmployee(user));
+	}
+	
+	/**
+	 * Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isExternal(User)}.
+	 */
+	@Test
+	@Transactional
+	@Rollback
+	public void testExternal() {
+		//Not yet implemented
+		Assert.assertFalse(roleDao.isExternal(user));
+
+	}
+	
+	/**
+	 * Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isAdmin(User)}.
+	 */
+	@Test
+	@Transactional
+	@Rollback
+	public void testAdminLazyDeleted() {
+		
+		Admin a = new Admin();
+		a.setUser(user);
+		Assert.assertFalse(roleDao.isAdmin(user));
+		if(!roleDao.isAdmin(user))
+			a = (Admin) roleDao.save(a);
+		
+		Assert.assertTrue(roleDao.isAdmin(user));
+		
+		roleDao.lazyDelete(a);
+		
+		Assert.assertFalse(roleDao.isAdmin(user));
+	}
+
+
+}
diff --git a/src/test/java/se/su/dsv/scipro/dao/jpa/TestUserDaoJPA-context.xml b/src/test/java/se/su/dsv/scipro/dao/jpa/TestUserDaoJPA-context.xml
index 85cae8b053..eb326445b1 100644
--- a/src/test/java/se/su/dsv/scipro/dao/jpa/TestUserDaoJPA-context.xml
+++ b/src/test/java/se/su/dsv/scipro/dao/jpa/TestUserDaoJPA-context.xml
@@ -24,6 +24,6 @@
 	<bean id="userDao" class="se.su.dsv.scipro.data.dao.jpa.UserDaoJPAImp">
 		<property name="entityManagerFactory" ref="entityManagerFactory" />
 	</bean>
-	
+
 
 </beans>
diff --git a/src/test/java/se/su/dsv/scipro/wicket/TestWicketPages.java b/src/test/java/se/su/dsv/scipro/wicket/TestWicketPages.java
index b302c39ef2..5bdc7b2e5b 100644
--- a/src/test/java/se/su/dsv/scipro/wicket/TestWicketPages.java
+++ b/src/test/java/se/su/dsv/scipro/wicket/TestWicketPages.java
@@ -10,6 +10,7 @@ import org.mockito.Mockito;
 import se.su.dsv.scipro.HomePage;
 import se.su.dsv.scipro.SciProApplication;
 import se.su.dsv.scipro.data.dao.interfaces.EventDao;
+import se.su.dsv.scipro.data.dao.interfaces.RoleDao;
 import se.su.dsv.scipro.data.dao.interfaces.UserDao;
 import se.su.dsv.scipro.loginlogout.pages.LoginPage;
 import se.su.dsv.scipro.pages.EventPage;
@@ -29,9 +30,11 @@ public class TestWicketPages {
 		
 		EventDao eventDao = Mockito.mock(EventDao.class);
 		UserDao userDao = Mockito.mock(UserDao.class);
+		RoleDao roleDao = Mockito.mock(RoleDao.class);
 		
 		acm.putBean("eventDao", eventDao);
 		acm.putBean("userDao", userDao);
+		acm.putBean("roleDao", roleDao);
 		
 		tester = new WicketTester(new SciProApplication(){
 			/* (non-Javadoc)