You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2019/03/29 13:51:25 UTC

[openmeetings] branch master updated: [OPENMEETINGS-1859] openjpa version is downgraded to the latest release

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 6884eef  [OPENMEETINGS-1859] openjpa version is downgraded to the latest release
6884eef is described below

commit 6884eef41f6887989bc336be3609ebb61d053016
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Mar 29 20:51:11 2019 +0700

    [OPENMEETINGS-1859] openjpa version is downgraded to the latest release
---
 openmeetings-db/pom.xml                            |  5 ++++
 .../openmeetings/db/entity/basic/ChatMessage.java  | 21 ++++++++------
 .../db/entity/basic/Configuration.java             | 11 +++++---
 .../openmeetings/db/entity/basic/MailMessage.java  | 15 ++++++----
 .../db/entity/calendar/Appointment.java            | 31 +++++++++++---------
 .../db/entity/calendar/MeetingMember.java          |  7 +++--
 .../db/entity/calendar/OmCalendar.java             | 11 +++++---
 .../openmeetings/db/entity/file/BaseFileItem.java  | 11 +++++---
 .../openmeetings/db/entity/file/FileItem.java      | 19 +++++++------
 .../openmeetings/db/entity/file/FileItemLog.java   |  7 +++--
 .../openmeetings/db/entity/log/ConferenceLog.java  |  7 +++--
 .../openmeetings/db/entity/record/Recording.java   | 21 ++++++++------
 .../db/entity/record/RecordingChunk.java           |  9 ++++--
 .../openmeetings/db/entity/room/Invitation.java    |  7 +++--
 .../apache/openmeetings/db/entity/room/Room.java   | 27 ++++++++++--------
 .../openmeetings/db/entity/room/RoomModerator.java |  9 ++++--
 .../openmeetings/db/entity/room/RoomPoll.java      | 15 ++++++----
 .../openmeetings/db/entity/server/LdapConfig.java  |  9 ++++--
 .../openmeetings/db/entity/server/OAuthServer.java |  9 ++++--
 .../openmeetings/db/entity/server/Sessiondata.java |  5 +++-
 .../apache/openmeetings/db/entity/user/Group.java  | 15 ++++++----
 .../openmeetings/db/entity/user/GroupUser.java     | 11 +++++---
 .../db/entity/user/PrivateMessage.java             | 13 +++++----
 .../apache/openmeetings/db/entity/user/User.java   | 33 ++++++++++++----------
 .../openmeetings/db/entity/user/UserContact.java   | 19 +++++++------
 .../openmeetings/db/util/ApplicationHelper.java    |  6 +++-
 .../WEB-INF/classes/META-INF/db2_persistence.xml   |  6 ++--
 .../WEB-INF/classes/META-INF/derby_persistence.xml |  6 ++--
 .../WEB-INF/classes/META-INF/mssql_persistence.xml |  6 ++--
 .../WEB-INF/classes/META-INF/mysql_persistence.xml |  6 ++--
 .../classes/META-INF/oracle_persistence.xml        |  6 ++--
 .../classes/META-INF/postgresql_persistence.xml    |  6 ++--
 pom.xml                                            |  3 +-
 33 files changed, 231 insertions(+), 161 deletions(-)

diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 86f3cc3..797bc8a 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -92,6 +92,11 @@
 			</exclusions>
 		</dependency>
 		<dependency>
+			<groupId>commons-pool</groupId>
+			<artifactId>commons-pool</artifactId>
+			<version>${commons-pool.version}</version>
+		</dependency>
+		<dependency>
 			<groupId>org.apache.commons</groupId>
 			<artifactId>commons-pool2</artifactId>
 			<version>${commons-pool2.version}</version>
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
index d1b1073..517bc6b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
@@ -28,6 +28,7 @@ import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.Lob;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -39,19 +40,21 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getChatMessageById", query = "SELECT c FROM ChatMessage c WHERE c.id = :id")
-@NamedQuery(name = "getChatMessages", query = "SELECT c FROM ChatMessage c ORDER BY c.id")
-@NamedQuery(name = "getGlobalChatMessages", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom IS NULL ORDER BY c.sent DESC")
-@NamedQuery(name = "getChatMessagesByRoom", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom.id = :roomId"
+, @NamedQuery(name = "getChatMessages", query = "SELECT c FROM ChatMessage c ORDER BY c.id")
+, @NamedQuery(name = "getGlobalChatMessages", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom IS NULL ORDER BY c.sent DESC")
+, @NamedQuery(name = "getChatMessagesByRoom", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom.id = :roomId"
 		+ " AND (true = :all OR (false = :all AND c.needModeration = false)) ORDER BY c.sent DESC")
-@NamedQuery(name = "getChatMessagesByUser", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NOT NULL AND c.toRoom IS NULL AND "
+, @NamedQuery(name = "getChatMessagesByUser", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NOT NULL AND c.toRoom IS NULL AND "
 		+ "(c.fromUser.id = :userId OR c.toUser.id = :userId) ORDER BY c.sent DESC")
-@NamedQuery(name = "getChatMessagesByUserTime", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NOT NULL AND c.toRoom IS NULL AND "
+, @NamedQuery(name = "getChatMessagesByUserTime", query = "SELECT c FROM ChatMessage c WHERE c.toUser IS NOT NULL AND c.toRoom IS NULL AND "
 		+ "(c.fromUser.id = :userId OR c.toUser.id = :userId) AND c.sent > :date ORDER BY c.sent DESC")
-@NamedQuery(name = "deleteChatGlobal", query = "DELETE FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom IS NULL")
-@NamedQuery(name = "deleteChatRoom", query = "DELETE FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom.id = :roomId")
-@NamedQuery(name = "deleteChatUser", query = "DELETE FROM ChatMessage c WHERE c.toRoom IS NULL AND c.toUser.id = :userId")
-@NamedQuery(name = "purgeChatUserName", query = "UPDATE ChatMessage c SET c.fromName = :purged WHERE c.fromUser.id = :userId")
+, @NamedQuery(name = "deleteChatGlobal", query = "DELETE FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom IS NULL")
+, @NamedQuery(name = "deleteChatRoom", query = "DELETE FROM ChatMessage c WHERE c.toUser IS NULL AND c.toRoom.id = :roomId")
+, @NamedQuery(name = "deleteChatUser", query = "DELETE FROM ChatMessage c WHERE c.toRoom IS NULL AND c.toUser.id = :userId")
+, @NamedQuery(name = "purgeChatUserName", query = "UPDATE ChatMessage c SET c.fromName = :purged WHERE c.fromUser.id = :userId")
+})
 @Table(name = "chat")
 @Root(name = "ChatMessage")
 public class ChatMessage implements IDataProviderEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
index 6d17e8d..cbdadc1 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
@@ -29,6 +29,7 @@ import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.Lob;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -39,14 +40,16 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "forceGetConfigurationByKey", query = "SELECT c FROM Configuration c WHERE c.key LIKE :key")
-@NamedQuery(name = "getConfigurationsByKeys", query = "SELECT c FROM Configuration c "
+, @NamedQuery(name = "getConfigurationsByKeys", query = "SELECT c FROM Configuration c "
 		+ "WHERE c.key IN :keys and c.deleted = false")
-@NamedQuery(name = "getNondeletedConfiguration", query = "SELECT c FROM Configuration c  "
+, @NamedQuery(name = "getNondeletedConfiguration", query = "SELECT c FROM Configuration c  "
 		+ "LEFT JOIN FETCH c.user WHERE c.deleted = false ORDER BY c.id ASC")
-@NamedQuery(name = "getConfigurationById", query = "SELECT c FROM Configuration c "
+, @NamedQuery(name = "getConfigurationById", query = "SELECT c FROM Configuration c "
 		+ "LEFT JOIN FETCH c.user WHERE c.id = :id and c.deleted = false")
-@NamedQuery(name = "countConfigurations", query = "SELECT COUNT(c) FROM Configuration c WHERE c.deleted = false")
+, @NamedQuery(name = "countConfigurations", query = "SELECT COUNT(c) FROM Configuration c WHERE c.deleted = false")
+})
 @Table(name = "configuration")
 @Root(name = "config")
 public class Configuration extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
index 1e2e2b8..43f7a98 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
@@ -26,19 +26,22 @@ import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
 import org.apache.openmeetings.db.entity.HistoricalEntity;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getMailMessageById", query = "SELECT m FROM MailMessage m WHERE m.id = :id")
-@NamedQuery(name = "getMailMessages", query = "SELECT m FROM MailMessage m ORDER BY m.updated, m.inserted")
-@NamedQuery(name = "getMailMessagesByStatus", query = "SELECT m FROM MailMessage m WHERE m.status = :status ORDER BY m.updated, m.inserted")
-@NamedQuery(name = "countMailMessages", query = "SELECT COUNT(m) FROM MailMessage m")
-@NamedQuery(name = "resetMailStatusByDate", query = "UPDATE MailMessage m SET m.status = :noneStatus WHERE m.status = :sendingStatus AND m.updated < :date")
-@NamedQuery(name = "resetMailStatusById", query = "UPDATE MailMessage m SET m.errorCount = 0, m.status = :noneStatus WHERE m.id = :id")
-@NamedQuery(name = "purgeMailMessages", query = "DELETE FROM MailMessage m WHERE m.recipients LIKE :email OR m.replyTo LIKE :email")
+, @NamedQuery(name = "getMailMessages", query = "SELECT m FROM MailMessage m ORDER BY m.updated, m.inserted")
+, @NamedQuery(name = "getMailMessagesByStatus", query = "SELECT m FROM MailMessage m WHERE m.status = :status ORDER BY m.updated, m.inserted")
+, @NamedQuery(name = "countMailMessages", query = "SELECT COUNT(m) FROM MailMessage m")
+, @NamedQuery(name = "resetMailStatusByDate", query = "UPDATE MailMessage m SET m.status = :noneStatus WHERE m.status = :sendingStatus AND m.updated < :date")
+, @NamedQuery(name = "resetMailStatusById", query = "UPDATE MailMessage m SET m.errorCount = 0, m.status = :noneStatus WHERE m.id = :id")
+, @NamedQuery(name = "purgeMailMessages", query = "DELETE FROM MailMessage m WHERE m.recipients LIKE :email OR m.replyTo LIKE :email")
+})
 @Table(name = "email_queue")
 public class MailMessage extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
index f929491..1ef5ae9 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
@@ -35,6 +35,7 @@ import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.Lob;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
@@ -48,10 +49,11 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @Table(name = "appointment")
+@NamedQueries({
 @NamedQuery(name="getAppointmentById", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.id = :id")
-@NamedQuery(name="getAppointmentByIdAny", query="SELECT a FROM Appointment a WHERE a.id = :id")
-@NamedQuery(name="getAppointments", query="SELECT a FROM Appointment a WHERE a.deleted = false ORDER BY a.id")
-@NamedQuery(name="appointmentsInRange",
+, @NamedQuery(name="getAppointmentByIdAny", query="SELECT a FROM Appointment a WHERE a.id = :id")
+, @NamedQuery(name="getAppointments", query="SELECT a FROM Appointment a WHERE a.deleted = false ORDER BY a.id")
+, @NamedQuery(name="appointmentsInRange",
 	query="SELECT a FROM Appointment a "
 		+ "WHERE a.deleted = false "
 		+ "	AND ( "
@@ -61,7 +63,7 @@ import org.simpleframework.xml.Root;
 		+ "	)"
 		+ "	AND a.owner.id = :userId"
 	)
-@NamedQuery(name="joinedAppointmentsInRange",
+, @NamedQuery(name="joinedAppointmentsInRange",
 	query="SELECT a FROM MeetingMember mm INNER JOIN mm.appointment a "
 		+ "WHERE mm.deleted = false AND mm.user.id <> a.owner.id AND mm.user.id = :userId "
 		+ "	AND a.id NOT IN (SELECT a.id FROM Appointment a WHERE a.owner.id = :userId)"
@@ -72,7 +74,7 @@ import org.simpleframework.xml.Root;
 		+ "		OR (a.start < :start AND a.end > :end) "
 		+ "	)"
 	)
-@NamedQuery(name="appointmentsInRangeRemind",
+, @NamedQuery(name="appointmentsInRangeRemind",
 	query="SELECT a FROM Appointment a "
 		//only ReminderType simple mail is concerned!
 		+ "WHERE a.deleted = false AND a.reminderEmailSend = false"
@@ -83,10 +85,10 @@ import org.simpleframework.xml.Root;
 		+ "		OR (a.start < :start AND a.end > :end) "
 		+ "	)"
 	)
-@NamedQuery(name="getAppointmentByRoomId", query="SELECT a FROM Appointment a WHERE a.room.id = :roomId")
-@NamedQuery(name="getAppointmentByOwnerRoomId", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.owner.id = :userId AND a.room.id = :roomId")
+, @NamedQuery(name="getAppointmentByRoomId", query="SELECT a FROM Appointment a WHERE a.room.id = :roomId")
+, @NamedQuery(name="getAppointmentByOwnerRoomId", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.owner.id = :userId AND a.room.id = :roomId")
 //this query returns duplicates if the user books an appointment with his own user as second meeting-member, swagner 19.02.2012
-@NamedQuery(name="appointmentsInRangeByUser",
+, @NamedQuery(name="appointmentsInRangeByUser",
 	query="SELECT a FROM MeetingMember mm, IN(mm.appointment) a "
 		+ "WHERE mm.deleted = false AND mm.user.id <> a.owner.id AND mm.user.id = :userId "
 		+ "	AND ( "
@@ -95,7 +97,7 @@ import org.simpleframework.xml.Root;
 		+ "		OR (a.start < :start AND a.end > :end) "
 		+ "	)"
 	)
-@NamedQuery(name="appointedRoomsInRangeByUser",
+, @NamedQuery(name="appointedRoomsInRangeByUser",
 	query="SELECT a.room FROM MeetingMember mm, IN(mm.appointment) a "
 		+ "WHERE mm.deleted = false AND mm.user.id <> a.owner.id AND mm.user.id = :userId "
 		+ "	AND ( "
@@ -104,16 +106,17 @@ import org.simpleframework.xml.Root;
 		+ "		OR (a.start < :start AND a.end > :end) "
 		+ "	)"
 	)
-@NamedQuery(name="getNextAppointment", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.start > :start AND a.owner.id = :userId")
-@NamedQuery(name="getAppointmentsByTitle", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.title LIKE :title AND a.owner.id = :userId")
+, @NamedQuery(name="getNextAppointment", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.start > :start AND a.owner.id = :userId")
+, @NamedQuery(name="getAppointmentsByTitle", query="SELECT a FROM Appointment a WHERE a.deleted = false AND a.title LIKE :title AND a.owner.id = :userId")
 
 //Calendar Related Queries
-@NamedQuery(name = "getAppointmentsbyCalendar",
+, @NamedQuery(name = "getAppointmentsbyCalendar",
 	query = "SELECT a FROM Appointment a WHERE a.deleted = false AND a.calendar.id = :calId ORDER BY a.id")
-@NamedQuery(name = "getHrefsforAppointmentsinCalendar",
+, @NamedQuery(name = "getHrefsforAppointmentsinCalendar",
 	query = "SELECT a.href FROM Appointment a WHERE a.deleted = FALSE AND a.calendar.id = :calId ORDER BY a.id")
-@NamedQuery(name = "deleteAppointmentsbyCalendar",
+, @NamedQuery(name = "deleteAppointmentsbyCalendar",
 	query = "UPDATE Appointment a SET a.deleted = true WHERE a.calendar.id = :calId")
+})
 @Root(name = "appointment")
 public class Appointment extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
index 2413e8c..1e3df38 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
@@ -27,6 +27,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToOne;
 import javax.persistence.Table;
@@ -40,11 +41,13 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @Table(name = "meeting_member")
+@NamedQueries({
 @NamedQuery(name="getMeetingMemberById"
 		, query="SELECT mm FROM MeetingMember mm WHERE mm.deleted = false AND mm.id = :id")
-@NamedQuery(name="getMeetingMembers", query="SELECT mm FROM MeetingMember mm ORDER BY mm.id")
-@NamedQuery(name="getMeetingMemberIdsByAppointment"
+, @NamedQuery(name="getMeetingMembers", query="SELECT mm FROM MeetingMember mm ORDER BY mm.id")
+, @NamedQuery(name="getMeetingMemberIdsByAppointment"
 		, query="SELECT mm.id FROM MeetingMember mm WHERE mm.deleted = false AND mm.appointment.id = :id")
+})
 @Root(name = "meetingmember")
 public class MeetingMember extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
index f51d767..180aaac 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
@@ -28,6 +28,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -39,15 +40,16 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @Table(name = "om_calendar")
+@NamedQueries({
 @NamedQuery(name = "getCalendars", query = "SELECT c FROM OmCalendar c WHERE c.deleted = false ORDER BY c.id")
-@NamedQuery(name = "getCalendarbyUser", query = "SELECT c FROM OmCalendar c"
+, @NamedQuery(name = "getCalendarbyUser", query = "SELECT c FROM OmCalendar c"
 		+ " WHERE c.deleted = false AND c.owner.id = :userId AND c.syncType <> OmCalendar$SyncType.GOOGLE_CALENDAR "
 		+ "ORDER BY c.id")
 // OpenJPA has trouble with referencing Subclasses, thus java $ symbol is used
 // Comes from the OpenJPA Mailing List.
-@NamedQuery(name = "getGoogleCalendars", query = "SELECT c FROM OmCalendar c WHERE c.deleted = false AND c.owner.id = :userId "
+, @NamedQuery(name = "getGoogleCalendars", query = "SELECT c FROM OmCalendar c WHERE c.deleted = false AND c.owner.id = :userId "
 		+ "AND c.syncType = OmCalendar$SyncType.GOOGLE_CALENDAR ORDER BY c.id")
-@NamedQuery(name = "getAppointmentsbyCalendarinRange", query = "SELECT a FROM Appointment a "
+, @NamedQuery(name = "getAppointmentsbyCalendarinRange", query = "SELECT a FROM Appointment a "
 		+ "WHERE a.deleted = false "
 		+ "	AND ( "
 		+ "		(a.start BETWEEN :start AND :end) "
@@ -55,7 +57,8 @@ import org.simpleframework.xml.Root;
 		+ "		OR (a.start < :start AND a.end > :end) "
 		+ "	)"
 		+ "	AND a.owner.id = :userId AND a.calendar.id = :calId  ")
-@NamedQuery(name = "getCalendarbyId", query = "SELECT c FROM OmCalendar c WHERE c.deleted = false AND c.id = :calId")
+, @NamedQuery(name = "getCalendarbyId", query = "SELECT c FROM OmCalendar c WHERE c.deleted = false AND c.id = :calId")
+})
 @Root(name = "calendar")
 public class OmCalendar extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
index 590e328..f1e8d38 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
@@ -45,6 +45,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Inheritance;
 import javax.persistence.InheritanceType;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.persistence.Transient;
@@ -55,18 +56,20 @@ import org.apache.openmeetings.util.OmFileHelper;
 import org.simpleframework.xml.Element;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getFileById", query = "SELECT f FROM BaseFileItem f WHERE f.deleted = false AND f.id = :id")
-@NamedQuery(name = "getAnyFileById", query = "SELECT f FROM BaseFileItem f WHERE f.id = :id")
-@NamedQuery(name = "getFileByHash", query = "SELECT f FROM BaseFileItem f WHERE f.deleted = false AND f.hash = :hash")
-@NamedQuery(name = "getAllFileItemsForRoom", query = "SELECT f FROM BaseFileItem f"
+, @NamedQuery(name = "getAnyFileById", query = "SELECT f FROM BaseFileItem f WHERE f.id = :id")
+, @NamedQuery(name = "getFileByHash", query = "SELECT f FROM BaseFileItem f WHERE f.deleted = false AND f.hash = :hash")
+, @NamedQuery(name = "getAllFileItemsForRoom", query = "SELECT f FROM BaseFileItem f"
 		+ " WHERE f.deleted = false AND f.type <> :folder"
 		+ " AND (f.roomId IS NULL OR f.roomId = :roomId)"
 		+ " AND (f.groupId IS NULL OR f.groupId IN :groups)"
 		+ " AND f.ownerId IS NULL" // not loading personal files
 		+ " AND f.name LIKE :name"
 		+ " ORDER BY f.name")
-@NamedQuery(name = "getFileItemsByIds", query = "SELECT f FROM BaseFileItem f"
+, @NamedQuery(name = "getFileItemsByIds", query = "SELECT f FROM BaseFileItem f"
 		+ " WHERE f.deleted = false AND f.id IN :ids")
+})
 @Table(name = "om_file")
 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
 public abstract class BaseFileItem extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
index d835273..3963148 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
@@ -20,29 +20,32 @@ package org.apache.openmeetings.db.entity.file;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getAllFiles", query = "SELECT f FROM FileItem f ORDER BY f.id")
-@NamedQuery(name = "getFilesByRoom", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.roomId = :roomId " +
+, @NamedQuery(name = "getFilesByRoom", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.roomId = :roomId " +
 		"AND f.ownerId IS NULL AND f.parentId IS NULL ORDER BY f.type ASC, f.name ")
-@NamedQuery(name = "getFilesByOwner", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId = :ownerId "
+, @NamedQuery(name = "getFilesByOwner", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId = :ownerId "
 		+ "AND f.parentId IS NULL ORDER BY f.type ASC, f.name ")
-@NamedQuery(name = "getFilesByParent", query = "SELECT f FROM FileItem f WHERE f.deleted = false "
+, @NamedQuery(name = "getFilesByParent", query = "SELECT f FROM FileItem f WHERE f.deleted = false "
 		+ "AND f.parentId = :parentId ORDER BY f.type ASC, f.name ")
-@NamedQuery(name = "getFilesFilteredByParent", query = "SELECT f FROM FileItem f WHERE f.deleted = false "
+, @NamedQuery(name = "getFilesFilteredByParent", query = "SELECT f FROM FileItem f WHERE f.deleted = false "
 		+ "AND f.parentId = :parentId AND f.type IN :filter ORDER BY f.type ASC, f.name ")
-@NamedQuery(name = "getFileExternal", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.externalId = :externalId AND f.externalType LIKE :externalType")
-@NamedQuery(name = "getFileAllExternal", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.externalType LIKE :externalType")
-@NamedQuery(name = "getFileByGroup", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId IS NULL "
+, @NamedQuery(name = "getFileExternal", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.externalId = :externalId AND f.externalType LIKE :externalType")
+, @NamedQuery(name = "getFileAllExternal", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.externalType LIKE :externalType")
+, @NamedQuery(name = "getFileByGroup", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId IS NULL "
 		+ "AND f.groupId = :groupId AND f.parentId IS NULL "
 		+ "ORDER BY f.type ASC, f.name")
-@NamedQuery(name = "getFileFilteredByGroup", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId IS NULL "
+, @NamedQuery(name = "getFileFilteredByGroup", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId IS NULL "
 		+ "AND f.groupId = :groupId AND f.parentId IS NULL AND f.type IN :filter "
 		+ "ORDER BY f.type ASC, f.name")
+})
 @Root
 public class FileItem extends BaseFileItem {
 	private static final long serialVersionUID = 1L;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
index 3b2aa15..3c3b76b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
@@ -28,14 +28,17 @@ import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 
 import org.apache.openmeetings.db.entity.IDataProviderEntity;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getFileLogsByFile", query = "SELECT fl FROM FileItemLog fl WHERE fl.fileId = :fileId")
-@NamedQuery(name = "countErrorFileLogsByFile", query = "SELECT COUNT(fl) FROM FileItemLog fl WHERE fl.fileId = :fileId AND fl.optional = false AND fl.exitCode <> 0")
-@NamedQuery(name = "deleteErrorFileLogsByFile", query = "DELETE FROM FileItemLog fl WHERE fl.fileId = :fileId")
+, @NamedQuery(name = "countErrorFileLogsByFile", query = "SELECT COUNT(fl) FROM FileItemLog fl WHERE fl.fileId = :fileId AND fl.optional = false AND fl.exitCode <> 0")
+, @NamedQuery(name = "deleteErrorFileLogsByFile", query = "DELETE FROM FileItemLog fl WHERE fl.fileId = :fileId")
+})
 public class FileItemLog implements IDataProviderEntity {
 	private static final long serialVersionUID = 1L;
 	public static final int MAX_LOG_SIZE = 1 * 1024 * 1024;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
index 06d32e3..cec503a 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
@@ -27,6 +27,7 @@ import javax.persistence.Enumerated;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -34,12 +35,14 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity;
 
 @Entity
 @Table(name = "conference_log")
+@NamedQueries({
 @NamedQuery(name = "getLogRecentRooms", query = "SELECT c FROM ConferenceLog c "
 	+ "WHERE c.roomId IS NOT NULL AND c.type = :roomEnter and c.userId = :userId ORDER BY c.inserted DESC")
-@NamedQuery(name = "clearLogUserIpByUser", query = "UPDATE ConferenceLog c SET c.userip = NULL "
+, @NamedQuery(name = "clearLogUserIpByUser", query = "UPDATE ConferenceLog c SET c.userip = NULL "
 		+ "WHERE c.userip IS NOT NULL AND c.userId = :userId")
-@NamedQuery(name = "clearLogUserIp", query = "UPDATE ConferenceLog c SET c.userip = NULL "
+, @NamedQuery(name = "clearLogUserIp", query = "UPDATE ConferenceLog c SET c.userip = NULL "
 		+ "WHERE c.userip IS NOT NULL AND c.inserted < :date")
+})
 public class ConferenceLog implements IDataProviderEntity {
 	private static final long serialVersionUID = 1L;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
index 708bd53..4066a65 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
@@ -31,6 +31,7 @@ import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.xml.bind.annotation.XmlAccessType;
@@ -59,33 +60,35 @@ import org.simpleframework.xml.Root;
  *
  */
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getRecordingsByExternalUser", query = "SELECT c FROM Recording c, User u "
 		+ "WHERE c.insertedBy = u.id AND u.externalId = :externalId  AND u.externalType = :externalType "
 		+ "AND c.deleted = false")
-@NamedQuery(name = "getRecordingsPublic", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.ownerId IS NULL "
+, @NamedQuery(name = "getRecordingsPublic", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.ownerId IS NULL "
 		+ "AND f.groupId IS NULL AND (f.parentId IS NULL OR f.parentId = 0) "
 		+ "ORDER BY f.type ASC, f.inserted")
-@NamedQuery(name = "getRecordingsByGroup", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.ownerId IS NULL "
+, @NamedQuery(name = "getRecordingsByGroup", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.ownerId IS NULL "
 		+ "AND f.groupId = :groupId AND (f.parentId IS NULL OR f.parentId = 0) "
 		+ "ORDER BY f.type ASC, f.inserted")
-@NamedQuery(name = "getRecordingsByOwner", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.ownerId = :ownerId "
+, @NamedQuery(name = "getRecordingsByOwner", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.ownerId = :ownerId "
 		+ "AND (f.parentId IS NULL OR f.parentId = 0) "
 		+ "ORDER BY f.type ASC, f.inserted")
-@NamedQuery(name = "resetRecordingProcessingStatus", query = "UPDATE Recording f SET f.status = :error WHERE f.status IN (:recording, :converting)")
-@NamedQuery(name = "getRecordingsAll", query = "SELECT c FROM Recording c LEFT JOIN FETCH c.chunks ORDER BY c.id")
-@NamedQuery(name = "getRecordingsByRoom", query = "SELECT c FROM Recording c WHERE c.deleted = false AND c.roomId = :roomId "
+, @NamedQuery(name = "resetRecordingProcessingStatus", query = "UPDATE Recording f SET f.status = :error WHERE f.status IN (:recording, :converting)")
+, @NamedQuery(name = "getRecordingsAll", query = "SELECT c FROM Recording c LEFT JOIN FETCH c.chunks ORDER BY c.id")
+, @NamedQuery(name = "getRecordingsByRoom", query = "SELECT c FROM Recording c WHERE c.deleted = false AND c.roomId = :roomId "
 		+ "ORDER BY c.type ASC, c.inserted")
-@NamedQuery(name = "getRecordingsByParent", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.parentId = :parentId "
+, @NamedQuery(name = "getRecordingsByParent", query = "SELECT f FROM Recording f WHERE f.deleted = false AND f.parentId = :parentId "
 		+ "ORDER BY f.type ASC, f.inserted")
-@NamedQuery(name = "getRecordingsByExternalType", query = "SELECT rec FROM Recording rec, Room r, User u "
+, @NamedQuery(name = "getRecordingsByExternalType", query = "SELECT rec FROM Recording rec, Room r, User u "
 		+ "WHERE rec.deleted = false AND rec.roomId = r.id AND rec.insertedBy = u.id "
 		+ "AND (r.externalType = :externalType OR u.externalType = :externalType)")
-@NamedQuery(name = "getExpiringRecordings", query = "SELECT DISTINCT rec FROM Recording rec "
+, @NamedQuery(name = "getExpiringRecordings", query = "SELECT DISTINCT rec FROM Recording rec "
 		+ "WHERE rec.deleted = false AND rec.notified = :notified AND rec.inserted < :date "
 		+ "  AND (rec.groupId = :groupId "
 		+ "    OR rec.ownerId IN (SELECT gu.user.id FROM GroupUser gu WHERE gu.group.id = :groupId)"
 		+ "    OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId)"
 		+ "  ) order by rec.inserted ASC")
+})
 @Root(name = "flvrecording")
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
index 94d8f60..4f8d76c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
@@ -30,6 +30,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.xml.bind.annotation.XmlType;
@@ -49,11 +50,13 @@ import org.simpleframework.xml.Root;
  * @author sebawagner
  */
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getChunkById", query = "SELECT c FROM RecordingChunk c WHERE c.id = :id")
-@NamedQuery(name = "getChunkByRecording", query = "SELECT c FROM RecordingChunk c WHERE c.recording.id = :recordingId AND c.deleted = false")
-@NamedQuery(name = "getNotScreenChunkByRecording", query = "SELECT c FROM RecordingChunk c WHERE c.recording.id = :recordingId AND c.deleted = false "
+, @NamedQuery(name = "getChunkByRecording", query = "SELECT c FROM RecordingChunk c WHERE c.recording.id = :recordingId AND c.deleted = false")
+, @NamedQuery(name = "getNotScreenChunkByRecording", query = "SELECT c FROM RecordingChunk c WHERE c.recording.id = :recordingId AND c.deleted = false "
 		+ "AND c.type <> :screen AND c.streamStatus <> :none")
-@NamedQuery(name = "getScreenChunkByRecording", query = "SELECT c FROM RecordingChunk c WHERE c.recording.id = :recordingId AND c.type = :screen")
+, @NamedQuery(name = "getScreenChunkByRecording", query = "SELECT c FROM RecordingChunk c WHERE c.recording.id = :recordingId AND c.type = :screen")
+})
 @Table(name = "recording_chunk")
 @Root(name = "flvrecordingmetadata")
 public class RecordingChunk extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
index f5c57bc..9afaad5 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
@@ -31,6 +31,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.persistence.Transient;
@@ -42,9 +43,11 @@ import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.User;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getInvitationbyId", query = "SELECT i FROM Invitation i WHERE i.deleted = false AND i.id = :id")
-@NamedQuery(name = "getInvitationByHashCode", query = "SELECT i FROM Invitation i where i.hash LIKE :hashCode AND i.deleted = false")
-@NamedQuery(name = "getInvitationByAppointment", query = "SELECT i FROM Invitation i WHERE i.appointment.id = :appointmentId")
+, @NamedQuery(name = "getInvitationByHashCode", query = "SELECT i FROM Invitation i where i.hash LIKE :hashCode AND i.deleted = false")
+, @NamedQuery(name = "getInvitationByAppointment", query = "SELECT i FROM Invitation i WHERE i.appointment.id = :appointmentId")
+})
 @Table(name = "invitation")
 public class Invitation extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
index f329016..aa77e98 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -36,6 +36,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
@@ -60,24 +61,26 @@ import org.simpleframework.xml.Root;
 	, @FetchGroup(name = "roomGroups", attributes = { @FetchAttribute(name = "groups") })
 	, @FetchGroup(name = "roomFiles", attributes = { @FetchAttribute(name = "files") })
 })
+@NamedQueries({
 @NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r WHERE r.deleted = false")
-@NamedQuery(name = "getPublicRooms", query = "SELECT r from Room r WHERE r.ispublic = true and r.deleted = false and r.type = :type")
-@NamedQuery(name = "getRoomByOwnerAndTypeId", query = "SELECT r FROM Room as r WHERE r.ownerId = :ownerId "
+, @NamedQuery(name = "getPublicRooms", query = "SELECT r from Room r WHERE r.ispublic = true and r.deleted = false and r.type = :type")
+, @NamedQuery(name = "getRoomByOwnerAndTypeId", query = "SELECT r FROM Room as r WHERE r.ownerId = :ownerId "
 				+ "AND r.type = :type AND r.deleted = false")
-@NamedQuery(name = "selectMaxFromRooms", query = "SELECT COUNT(r.id) from Room r WHERE r.deleted = false AND r.name LIKE :search ")
-@NamedQuery(name = "getRoomByExternalId", query = "SELECT r FROM Room as r "
+, @NamedQuery(name = "selectMaxFromRooms", query = "SELECT COUNT(r.id) from Room r WHERE r.deleted = false AND r.name LIKE :search ")
+, @NamedQuery(name = "getRoomByExternalId", query = "SELECT r FROM Room as r "
 		+ "WHERE r.externalId = :externalId AND r.externalType = :externalType "
 		+ "AND r.type = :type AND r.deleted = false")
-@NamedQuery(name = "getPublicRoomsOrdered", query = "SELECT r from Room r WHERE r.ispublic= true AND r.deleted= false AND r.appointment = false ORDER BY r.name ASC")
-@NamedQuery(name = "getRoomById", query = "SELECT r FROM Room r WHERE r.deleted = false AND r.id = :id")
-@NamedQuery(name = "getRoomsByIds", query = "SELECT r FROM Room r WHERE r.deleted = false AND r.id IN :ids")
-@NamedQuery(name = "getSipRoomIdsByIds", query = "SELECT r.id FROM Room r WHERE r.deleted = false AND r.sipEnabled = true AND r.id IN :ids")
-@NamedQuery(name = "countRooms", query = "SELECT COUNT(r) FROM Room r WHERE r.deleted = false")
-@NamedQuery(name = "getBackupRooms", query = "SELECT r FROM Room r ORDER BY r.id")
-@NamedQuery(name = "getRoomsCapacityByIds", query = "SELECT SUM(r.capacity) FROM Room r WHERE r.deleted = false AND r.id IN :ids")
-@NamedQuery(name = "getGroupRooms", query = "SELECT DISTINCT rg.room FROM RoomGroup rg LEFT JOIN FETCH rg.room "
+, @NamedQuery(name = "getPublicRoomsOrdered", query = "SELECT r from Room r WHERE r.ispublic= true AND r.deleted= false AND r.appointment = false ORDER BY r.name ASC")
+, @NamedQuery(name = "getRoomById", query = "SELECT r FROM Room r WHERE r.deleted = false AND r.id = :id")
+, @NamedQuery(name = "getRoomsByIds", query = "SELECT r FROM Room r WHERE r.deleted = false AND r.id IN :ids")
+, @NamedQuery(name = "getSipRoomIdsByIds", query = "SELECT r.id FROM Room r WHERE r.deleted = false AND r.sipEnabled = true AND r.id IN :ids")
+, @NamedQuery(name = "countRooms", query = "SELECT COUNT(r) FROM Room r WHERE r.deleted = false")
+, @NamedQuery(name = "getBackupRooms", query = "SELECT r FROM Room r ORDER BY r.id")
+, @NamedQuery(name = "getRoomsCapacityByIds", query = "SELECT SUM(r.capacity) FROM Room r WHERE r.deleted = false AND r.id IN :ids")
+, @NamedQuery(name = "getGroupRooms", query = "SELECT DISTINCT rg.room FROM RoomGroup rg LEFT JOIN FETCH rg.room "
 		+ "WHERE rg.group.id = :groupId AND rg.room.deleted = false AND rg.room.appointment = false "
 		+ "ORDER BY rg.room.name ASC")
+})
 @Table(name = "room")
 @Root(name = "room")
 @XmlRootElement
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
index 2b8c79a..1291d63 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
@@ -26,6 +26,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -36,11 +37,13 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getRoomModeratorById", query = "select c from RoomModerator as c where c.id = :id")
-@NamedQuery(name = "getRoomModeratorsByIds", query = "select c from RoomModerator as c where c.id IN :ids")
-@NamedQuery(name = "getRoomModeratorByRoomId", query = "select c from RoomModerator as c where c.roomId = :roomId AND c.deleted = false")
-@NamedQuery(name = "getRoomModeratorByUserAndRoomId", query = "select c from RoomModerator as c "
+, @NamedQuery(name = "getRoomModeratorsByIds", query = "select c from RoomModerator as c where c.id IN :ids")
+, @NamedQuery(name = "getRoomModeratorByRoomId", query = "select c from RoomModerator as c where c.roomId = :roomId AND c.deleted = false")
+, @NamedQuery(name = "getRoomModeratorByUserAndRoomId", query = "select c from RoomModerator as c "
 		+ "where c.roomId = :roomId AND c.deleted = false AND c.user.id = :userId")
+})
 @Table(name = "room_moderator")
 @Root(name = "room_moderator")
 public class RoomModerator extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
index 900dae3..99d0bd0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
@@ -32,6 +32,7 @@ import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
@@ -46,17 +47,19 @@ import org.simpleframework.xml.ElementList;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "closePoll", query = "UPDATE RoomPoll rp SET rp.archived = :archived "
 		+ "WHERE rp.room.id = :roomId")
-@NamedQuery(name = "deletePoll", query = "DELETE FROM RoomPoll rp WHERE rp.id = :id")
-@NamedQuery(name = "getPollById", query = "SELECT rp FROM RoomPoll rp WHERE rp.id = :id")
-@NamedQuery(name = "getPoll", query = "SELECT rp FROM RoomPoll rp "
+, @NamedQuery(name = "deletePoll", query = "DELETE FROM RoomPoll rp WHERE rp.id = :id")
+, @NamedQuery(name = "getPollById", query = "SELECT rp FROM RoomPoll rp WHERE rp.id = :id")
+, @NamedQuery(name = "getPoll", query = "SELECT rp FROM RoomPoll rp "
 		+ "WHERE rp.room.id = :roomId AND rp.archived = false")
-@NamedQuery(name = "getPollListBackup", query = "SELECT rp FROM RoomPoll rp ORDER BY rp.id")
-@NamedQuery(name = "getArchivedPollList", query = "SELECT rp FROM RoomPoll rp "
+, @NamedQuery(name = "getPollListBackup", query = "SELECT rp FROM RoomPoll rp ORDER BY rp.id")
+, @NamedQuery(name = "getArchivedPollList", query = "SELECT rp FROM RoomPoll rp "
 		+ "WHERE rp.room.id = :roomId AND rp.archived = true ORDER BY rp.created DESC")
-@NamedQuery(name = "hasPoll", query = "SELECT COUNT(rp) FROM RoomPoll rp "
+, @NamedQuery(name = "hasPoll", query = "SELECT COUNT(rp) FROM RoomPoll rp "
 		+ "WHERE rp.room.id = :roomId AND rp.archived = :archived")
+})
 @Table(name = "room_poll")
 @Root(name = "roompoll")
 public class RoomPoll implements IDataProviderEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
index 58cacbf..c7b9f62 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
@@ -27,6 +27,7 @@ import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.Lob;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -37,10 +38,12 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name="getNondeletedLdapConfigs", query="SELECT u FROM LdapConfig u WHERE u.deleted = false")
-@NamedQuery(name="getLdapConfigById", query="SELECT c FROM LdapConfig c WHERE c.id = :id AND c.deleted = false")
-@NamedQuery(name="countNondeletedLdapConfigs", query="SELECT COUNT(c.id) FROM LdapConfig c WHERE c.deleted = false")
-@NamedQuery(name="getActiveLdapConfigs", query="SELECT c FROM LdapConfig c WHERE c.deleted = false AND c.active = :isActive ORDER BY c.id")
+, @NamedQuery(name="getLdapConfigById", query="SELECT c FROM LdapConfig c WHERE c.id = :id AND c.deleted = false")
+, @NamedQuery(name="countNondeletedLdapConfigs", query="SELECT COUNT(c.id) FROM LdapConfig c WHERE c.deleted = false")
+, @NamedQuery(name="getActiveLdapConfigs", query="SELECT c FROM LdapConfig c WHERE c.deleted = false AND c.active = :isActive ORDER BY c.id")
+})
 @Table(name = "ldapconfig")
 @Root(name="ldapconfig")
 public class LdapConfig extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
index bbeae85..78ee9bd 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
@@ -33,6 +33,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.MapKeyColumn;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -42,10 +43,12 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @Table(name = "oauth_server")
+@NamedQueries({
 @NamedQuery(name = "getEnabledOAuthServers", query = "select s from OAuthServer as s where s.enabled = true and s.deleted = false")
-@NamedQuery(name = "getOAuthServerById", query = "select s from OAuthServer as s where s.id = :id")
-@NamedQuery(name = "getAllOAuthServers", query = "SELECT s FROM OAuthServer s WHERE s.deleted = false ORDER BY s.id")
-@NamedQuery(name = "countOAuthServers", query = "select count(s) from OAuthServer s WHERE s.deleted = false")
+, @NamedQuery(name = "getOAuthServerById", query = "select s from OAuthServer as s where s.id = :id")
+, @NamedQuery(name = "getAllOAuthServers", query = "SELECT s FROM OAuthServer s WHERE s.deleted = false ORDER BY s.id")
+, @NamedQuery(name = "countOAuthServers", query = "select count(s) from OAuthServer s WHERE s.deleted = false")
+})
 @Root
 public class OAuthServer extends HistoricalEntity {
 	private static final long serialVersionUID = 1L;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
index c20b106..1600ad6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
@@ -27,13 +27,16 @@ import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.xml.bind.annotation.XmlRootElement;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getSessionById", query = "SELECT s FROM Sessiondata s WHERE s.sessionId LIKE :sessionId")
-@NamedQuery(name = "getSessionToDelete", query = "SELECT s FROM Sessiondata s WHERE s.refreshed < :refreshed AND s.permanent = false")
+, @NamedQuery(name = "getSessionToDelete", query = "SELECT s FROM Sessiondata s WHERE s.refreshed < :refreshed AND s.permanent = false")
+})
 @Table(name = "sessiondata")
 @XmlRootElement
 public class Sessiondata implements Serializable {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
index 1a939e8..8c87527 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
@@ -23,6 +23,7 @@ import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -31,13 +32,15 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name="getGroupById", query="SELECT g FROM Group AS g WHERE g.id = :id AND g.deleted = false")
-@NamedQuery(name="getGroupByName", query="SELECT g FROM Group AS g WHERE g.name = :name AND g.deleted = false")
-@NamedQuery(name="getAnyGroupById", query="SELECT g FROM Group AS g WHERE g.id = :groupId")
-@NamedQuery(name="getGroupsByIds", query="SELECT g FROM Group AS g WHERE g.id IN :ids")
-@NamedQuery(name="getNondeletedGroups", query="SELECT g FROM Group g WHERE g.deleted = false ORDER BY g.id")
-@NamedQuery(name="countGroups", query="SELECT COUNT(g) FROM Group AS g WHERE g.deleted = false")
-@NamedQuery(name="getLimitedGroups", query="SELECT g FROM Group AS g WHERE g.deleted = false AND g.limited = true")
+, @NamedQuery(name="getGroupByName", query="SELECT g FROM Group AS g WHERE g.name = :name AND g.deleted = false")
+, @NamedQuery(name="getAnyGroupById", query="SELECT g FROM Group AS g WHERE g.id = :groupId")
+, @NamedQuery(name="getGroupsByIds", query="SELECT g FROM Group AS g WHERE g.id IN :ids")
+, @NamedQuery(name="getNondeletedGroups", query="SELECT g FROM Group g WHERE g.deleted = false ORDER BY g.id")
+, @NamedQuery(name="countGroups", query="SELECT COUNT(g) FROM Group AS g WHERE g.deleted = false")
+, @NamedQuery(name="getLimitedGroups", query="SELECT g FROM Group AS g WHERE g.deleted = false AND g.limited = true")
+})
 @Table(name = "om_group")
 @Root(name = "organisation")
 public class Group extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
index d4c5d84..4c869bb 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
@@ -26,6 +26,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -35,11 +36,13 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name="deleteGroupUsersByGroup", query="DELETE FROM GroupUser gu WHERE gu.group.id = :id")
-@NamedQuery(name="countGroupUsers", query="SELECT COUNT(c) FROM GroupUser c WHERE c.group.id = :id")
-@NamedQuery(name="getGroupUsersById", query="SELECT c FROM GroupUser c WHERE c.id = :id")
-@NamedQuery(name="getGroupUsersByGroupId", query="SELECT c FROM GroupUser c WHERE c.group.id = :id")
-@NamedQuery(name="isUserInGroup", query="SELECT c FROM GroupUser c WHERE c.group.id = :groupId AND c.user.id = :userId")
+, @NamedQuery(name="countGroupUsers", query="SELECT COUNT(c) FROM GroupUser c WHERE c.group.id = :id")
+, @NamedQuery(name="getGroupUsersById", query="SELECT c FROM GroupUser c WHERE c.id = :id")
+, @NamedQuery(name="getGroupUsersByGroupId", query="SELECT c FROM GroupUser c WHERE c.group.id = :id")
+, @NamedQuery(name="isUserInGroup", query="SELECT c FROM GroupUser c WHERE c.group.id = :groupId AND c.user.id = :userId")
+})
 @Table(name = "group_user")
 @Root(name="user_organisation")
 public class GroupUser extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
index 3655e18..e5511cc 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
@@ -30,6 +30,7 @@ import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.Lob;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -40,12 +41,14 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "getPrivateMessages", query = "SELECT c FROM PrivateMessage c ORDER BY c.id")
-@NamedQuery(name = "getPrivateMessageById", query = "SELECT c FROM PrivateMessage c WHERE c.id = :id ")
-@NamedQuery(name = "updatePrivateMessagesReadStatus", query = "UPDATE PrivateMessage c SET c.isRead = :isRead WHERE c.id IN (:ids) ")
-@NamedQuery(name = "moveMailsToFolder", query = "UPDATE PrivateMessage c SET c.folderId = :folderId WHERE c.id IN (:ids) ")
-@NamedQuery(name = "deletePrivateMessages", query = "DELETE FROM PrivateMessage c WHERE c.id IN (:ids) ")
-@NamedQuery(name = "getPrivateMessagesByRoom", query = "SELECT c FROM PrivateMessage c WHERE c.room.id = :roomId ")
+, @NamedQuery(name = "getPrivateMessageById", query = "SELECT c FROM PrivateMessage c WHERE c.id = :id ")
+, @NamedQuery(name = "updatePrivateMessagesReadStatus", query = "UPDATE PrivateMessage c SET c.isRead = :isRead WHERE c.id IN (:ids) ")
+, @NamedQuery(name = "moveMailsToFolder", query = "UPDATE PrivateMessage c SET c.folderId = :folderId WHERE c.id IN (:ids) ")
+, @NamedQuery(name = "deletePrivateMessages", query = "DELETE FROM PrivateMessage c WHERE c.id IN (:ids) ")
+, @NamedQuery(name = "getPrivateMessagesByRoom", query = "SELECT c FROM PrivateMessage c WHERE c.room.id = :roomId ")
+})
 @Table(name = "private_message")
 @Root(name = "privatemessage")
 public class PrivateMessage implements IDataProviderEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
index 8bd83ac..e4b2d7c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
@@ -42,6 +42,7 @@ import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
@@ -79,26 +80,28 @@ import org.simpleframework.xml.Root;
 	@FetchGroup(name = "backupexport", attributes = { @FetchAttribute(name = "password") })
 	, @FetchGroup(name = "groupUsers", attributes = { @FetchAttribute(name = "groupUsers")})
 })
+@NamedQueries({
 @NamedQuery(name = "getUserById", query = "SELECT u FROM User u WHERE u.id = :id")
-@NamedQuery(name = "getUsersByIds", query = "select c from User c where c.id IN :ids")
-@NamedQuery(name = "getUserByLogin", query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.login = :login AND ((:domainId = 0 AND u.domainId IS NULL) OR (:domainId > 0 AND u.domainId = :domainId))")
-@NamedQuery(name = "getUserByEmail", query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.address.email = :email AND ((:domainId = 0 AND u.domainId IS NULL) OR (:domainId > 0 AND u.domainId = :domainId))")
-@NamedQuery(name = "getUserByHash",  query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.resethash = :resethash")
-@NamedQuery(name = "getUserByExpiredHash",  query = "SELECT u FROM User u WHERE u.resetDate < :date")
-@NamedQuery(name = "getContactByEmailAndUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.address.email = :email AND u.type = :type AND u.ownerId = :ownerId")
-@NamedQuery(name = "selectMaxFromUsersWithSearch", query = "select count(c.id) from User c "
+, @NamedQuery(name = "getUsersByIds", query = "select c from User c where c.id IN :ids")
+, @NamedQuery(name = "getUserByLogin", query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.login = :login AND ((:domainId = 0 AND u.domainId IS NULL) OR (:domainId > 0 AND u.domainId = :domainId))")
+, @NamedQuery(name = "getUserByEmail", query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.address.email = :email AND ((:domainId = 0 AND u.domainId IS NULL) OR (:domainId > 0 AND u.domainId = :domainId))")
+, @NamedQuery(name = "getUserByHash",  query = "SELECT u FROM User u WHERE u.deleted = false AND u.type = :type AND u.resethash = :resethash")
+, @NamedQuery(name = "getUserByExpiredHash",  query = "SELECT u FROM User u WHERE u.resetDate < :date")
+, @NamedQuery(name = "getContactByEmailAndUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.address.email = :email AND u.type = :type AND u.ownerId = :ownerId")
+, @NamedQuery(name = "selectMaxFromUsersWithSearch", query = "select count(c.id) from User c "
 		+ "where c.deleted = false " + "AND ("
 		+ "lower(c.login) LIKE :search "
 		+ "OR lower(c.firstname) LIKE :search "
 		+ "OR lower(c.lastname) LIKE :search )")
-@NamedQuery(name = "getAllUsers", query = "SELECT u FROM User u ORDER BY u.id")
-@NamedQuery(name = "getPassword", query = "SELECT u.password FROM User u WHERE u.deleted = false AND u.id = :userId ")
-@NamedQuery(name = "updatePassword", query = "UPDATE User u SET u.password = :password WHERE u.id = :userId")
-@NamedQuery(name = "getNondeletedUsers", query = "SELECT u FROM User u WHERE u.deleted = false")
-@NamedQuery(name = "countNondeletedUsers", query = "SELECT COUNT(u) FROM User u WHERE u.deleted = false")
-@NamedQuery(name = "getUsersByGroupId", query = "SELECT u FROM User u WHERE u.deleted = false AND u.groupUsers.group.id = :groupId")
-@NamedQuery(name = "getExternalUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.externalId LIKE :externalId AND u.externalType LIKE :externalType")
-@NamedQuery(name = "getUserByLoginOrEmail", query = "SELECT u from User u WHERE u.deleted = false AND u.type = :type AND (u.login = :userOrEmail OR u.address.email = :userOrEmail)")
+, @NamedQuery(name = "getAllUsers", query = "SELECT u FROM User u ORDER BY u.id")
+, @NamedQuery(name = "getPassword", query = "SELECT u.password FROM User u WHERE u.deleted = false AND u.id = :userId ")
+, @NamedQuery(name = "updatePassword", query = "UPDATE User u SET u.password = :password WHERE u.id = :userId")
+, @NamedQuery(name = "getNondeletedUsers", query = "SELECT u FROM User u WHERE u.deleted = false")
+, @NamedQuery(name = "countNondeletedUsers", query = "SELECT COUNT(u) FROM User u WHERE u.deleted = false")
+, @NamedQuery(name = "getUsersByGroupId", query = "SELECT u FROM User u WHERE u.deleted = false AND u.groupUsers.group.id = :groupId")
+, @NamedQuery(name = "getExternalUser", query = "SELECT u FROM User u WHERE u.deleted = false AND u.externalId LIKE :externalId AND u.externalType LIKE :externalType")
+, @NamedQuery(name = "getUserByLoginOrEmail", query = "SELECT u from User u WHERE u.deleted = false AND u.type = :type AND (u.login = :userOrEmail OR u.address.email = :userOrEmail)")
+})
 @Table(name = "om_user")
 @Root(name = "user")
 public class User extends HistoricalEntity {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
index d965594..0ee75b9 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
@@ -29,6 +29,7 @@ import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
@@ -37,25 +38,27 @@ import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
 @Entity
+@NamedQueries({
 @NamedQuery(name = "deleteUserContact", query = "delete from UserContact u where u.id = :id")
-@NamedQuery(name = "deleteAllUserContacts", query = "delete from UserContact u where u.owner.id = :ownerId")
-@NamedQuery(name = "getContactByUserOwner", query = "SELECT c FROM UserContact c WHERE c.contact.id = :userId AND c.owner.id = :ownerId AND c.contact.deleted = false")
-@NamedQuery(name = "getContactsByUserAndStatus", query = "select c from UserContact c " +
+, @NamedQuery(name = "deleteAllUserContacts", query = "delete from UserContact u where u.owner.id = :ownerId")
+, @NamedQuery(name = "getContactByUserOwner", query = "SELECT c FROM UserContact c WHERE c.contact.id = :userId AND c.owner.id = :ownerId AND c.contact.deleted = false")
+, @NamedQuery(name = "getContactsByUserAndStatus", query = "select c from UserContact c " +
 		"where c.owner.id = :ownerId " +
 		"AND c.pending = :pending " +
 		"AND c.contact.deleted = false")
-@NamedQuery(name = "getContactRequestsByUserAndStatus", query = "select c from UserContact c " +
+, @NamedQuery(name = "getContactRequestsByUserAndStatus", query = "select c from UserContact c " +
 		"where c.contact.id = :userId " +
 		"AND c.pending = :pending " +
 		"AND c.contact.deleted = false")
-@NamedQuery(name = "getContactsByUser", query = "SELECT c FROM UserContact c " +
+, @NamedQuery(name = "getContactsByUser", query = "SELECT c FROM UserContact c " +
 		"WHERE c.contact.id = :userId " +
 		"AND c.contact.deleted = false ORDER BY c.pending DESC")
-@NamedQuery(name = "countContactsByUser", query = "select COUNT(c) from UserContact c " +
+, @NamedQuery(name = "countContactsByUser", query = "select COUNT(c) from UserContact c " +
 		"where c.contact.id = :userId " +
 		"AND c.contact.deleted = false")
-@NamedQuery(name = "getUserContactsById", query = "SELECT c FROM UserContact c WHERE c.id = :id")
-@NamedQuery(name = "getUserContacts", query = "SELECT c FROM UserContact c ORDER BY c.id")
+, @NamedQuery(name = "getUserContactsById", query = "SELECT c FROM UserContact c WHERE c.id = :id")
+, @NamedQuery(name = "getUserContacts", query = "SELECT c FROM UserContact c ORDER BY c.id")
+})
 @Table(name = "user_contact")
 @Root(name="usercontact")
 public class UserContact implements Serializable {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
index cb84a4f..672aade 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
@@ -86,7 +86,11 @@ public class ApplicationHelper {
 			} catch(IllegalStateException e) {
 				app.setServletContext(new MockServletContext(app, null));
 			}
-			app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
+			try {
+				app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
+			} catch(IllegalStateException e) {
+				//no-op configuration type already set
+			}
 			OMContextListener omcl = new OMContextListener();
 			omcl.contextInitialized(new ServletContextEvent(app.getServletContext()));
 			ThreadContext.setApplication(app);
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
index 4381c72..8710684 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/db2_persistence.xml
@@ -63,10 +63,8 @@
 			<property name="openjpa.ConnectionProperties"
 				value="DriverClassName=com.ibm.db2.jcc.DB2Driver
 					, Url=jdbc:db2://localhost:50000/openmeet
-					, maxTotal=100
-					, maxIdle=100
-					, minIdle=0
-					, maxWaitMillis=10000
+					, MaxActive=100
+					, MaxWait=10000
 					, TestOnBorrow=true
 					, poolPreparedStatements=true
 					, Username=${db_user}
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
index 0e49842..f231628 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml
@@ -64,10 +64,8 @@
 				value="DriverClassName=org.apache.derby.jdbc.EmbeddedDriver
 					, Url=jdbc:derby:openmeetings;create=true
 					, create=true
-					, maxTotal=100
-					, maxIdle=100
-					, minIdle=0
-					, maxWaitMillis=10000
+					, MaxActive=100
+					, MaxWait=10000
 					, TestOnBorrow=true
 					, Username=omdbuser
 					, Password=" />
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
index 4ea39f0..e45a0ca 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mssql_persistence.xml
@@ -63,10 +63,8 @@
 			<property name="openjpa.ConnectionProperties"
 				value="DriverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
 					, Url=jdbc:sqlserver://localhost:1433;databaseName=openmeetings
-					, maxTotal=100
-					, maxIdle=100
-					, minIdle=0
-					, maxWaitMillis=10000
+					, MaxActive=100
+					, MaxWait=10000
 					, Username=${db_user}
 					, Password=${db_pass}" />
 			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
index d1127c0..99912e7 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
@@ -63,10 +63,8 @@
 			<property name="openjpa.ConnectionProperties"
 				value="DriverClassName=com.mysql.cj.jdbc.Driver
 					, Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000&amp;useSSL=false&amp;nullNam [...]
-					, maxTotal=100
-					, maxIdle=100
-					, minIdle=0
-					, maxWaitMillis=10000
+					, MaxActive=100
+					, MaxWait=10000
 					, TestOnBorrow=true
 					, poolPreparedStatements=true
 					, Username=${db_user}
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
index 8a183ae..786e32a 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/oracle_persistence.xml
@@ -64,10 +64,8 @@
 				value="DriverClassName=oracle.jdbc.driver.OracleDriver
 					, Url=jdbc:oracle:thin:@localhost:1521:openmeetings
 					, create=true
-					, maxTotal=100
-					, maxIdle=100
-					, minIdle=0
-					, maxWaitMillis=10000
+					, MaxActive=100
+					, MaxWait=10000
 					, TestOnBorrow=true
 					, Username=${db_user}
 					, Password=${db_pass}" />
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
index d8ff368..fb30956 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/postgresql_persistence.xml
@@ -63,10 +63,8 @@
 			<property name="openjpa.ConnectionProperties"
 				value="DriverClassName=org.postgresql.Driver
 					, Url=jdbc:postgresql://localhost:5432/openmeetings
-					, maxTotal=100
-					, maxIdle=100
-					, minIdle=0
-					, maxWaitMillis=10000
+					, MaxActive=100
+					, MaxWait=10000
 					, TestOnBorrow=true
 					, poolPreparedStatements=true
 					, Username=${db_user}
diff --git a/pom.xml b/pom.xml
index 7c6d8e7..5a83720 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,9 +90,10 @@
 		<derby.version>10.14.2.0</derby.version>
 		<commons-lang3.version>3.8.1</commons-lang3.version>
 		<javax.mail.version>1.6.2</javax.mail.version>
-		<openjpa.version>3.0.1-SNAPSHOT</openjpa.version>
+		<openjpa.version>3.0.0</openjpa.version>
 		<asterisk-java.version>2.0.2</asterisk-java.version>
 		<commons-dbcp.version>2.6.0</commons-dbcp.version>
+		<commons-pool.version>1.6</commons-pool.version> <!-- required by OpenJPA for clustering -->
 		<commons-pool2.version>2.6.1</commons-pool2.version>
 		<postgresql.version>42.2.5</postgresql.version>
 		<commons-cli.version>1.4</commons-cli.version>