@NamedQuery(name = "FIND_BY_USER_NAME", query = "SELECT o FROM User o WHERE o.userName = :userName")
Here is the customized Sequence.
/**
 * 
 */
package com.ids_scheer.atskey.persistence.jpa.eclipselink.customizer;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import org.eclipse.persistence.config.SessionCustomizer;
import org.eclipse.persistence.internal.databaseaccess.Accessor;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.sequencing.Sequence;
import org.eclipse.persistence.sessions.Session;
/**
 * @author ROLA
 * 
 */
public class ATSKeyCustomSequence extends Sequence implements SessionCustomizer {
	/**
	 * 
	 */
	private static final long serialVersionUID = 6063793974472021257L;
	protected static final String SQL_MAX_ID = "SELECT MAX(%s) FROM %s";
	public ATSKeyCustomSequence() {
		super();
		System.out.println("instatiating sequence");
	}
	public ATSKeyCustomSequence(String name) {
		super(name);
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.eclipse.persistence.sequencing.Sequence#getGeneratedValue(org.eclipse
	 * .persistence.internal.databaseaccess.Accessor,
	 * org.eclipse.persistence.internal.sessions.AbstractSession,
	 * java.lang.String)
	 */
	@Override
	public Object getGeneratedValue(Accessor accessor, AbstractSession session,
			String name) {
		String tableName = null, idColumnName = null;
		// identify the name of table and the corresponding idColumnName
		// depending on the passed sequence
		if ("USER_SEQ".equals(name)) {
			tableName = "USER_TABLE";
			idColumnName = "USER_ID";
		}
		// get the maxId only if both the tableName and the idColumnName are
		// setted
		if (tableName != null && idColumnName != null) {
			try {
				int maxId = getMaxId(idColumnName, tableName, accessor
						.getConnection());
				maxId++;
				return maxId;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return null;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.eclipse.persistence.sequencing.Sequence#getGeneratedVector(org.eclipse
	 * .persistence.internal.databaseaccess.Accessor,
	 * org.eclipse.persistence.internal.sessions.AbstractSession,
	 * java.lang.String, int)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public Vector getGeneratedVector(Accessor arg0, AbstractSession arg1,
			String arg2, int arg3) {
		// TODO Auto-generated method stub
		return null;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.persistence.sequencing.Sequence#onConnect()
	 */
	@Override
	protected void onConnect() {
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.persistence.sequencing.Sequence#onDisconnect()
	 */
	@Override
	protected void onDisconnect() {
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.eclipse.persistence.sequencing.Sequence#shouldAcquireValueAfterInsert
	 * ()
	 */
	@Override
	public boolean shouldAcquireValueAfterInsert() {
		return false;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.persistence.sequencing.Sequence#shouldUseTransaction()
	 */
	@Override
	public boolean shouldUseTransaction() {
		return false;
	}
	@Override
	public boolean shouldUsePreallocation() {
		return false;
	}
	@Override
	public void customize(Session session) throws Exception {
		System.out.println("customizing session: " + session.getClass().getName());
		ATSKeyCustomSequence sequence = new ATSKeyCustomSequence(
				"ATSKEY_CUSTOM_GENERATOR");
		session.getLogin().addSequence(sequence);
	}
	/**
	 * 
	 * @param idColumn
	 * @param table
	 * @return the maxId in the given table
	 * @throws SQLException
	 */
	protected int getMaxId(String idColumn, String table, Connection connection)
			throws SQLException {
		// build the query
		String sqlQuery = String.format(SQL_MAX_ID, idColumn, table);
		// get the current max id
		ResultSet resultSet = connection.createStatement().executeQuery(
				(sqlQuery));
		// read out the result
		if (resultSet.next()) {
			return Integer.parseInt(resultSet.getString(1));
		}
		return -1;
	}
}
Any help will be appreciated
Rodrigue