Fórum mudar de EntityManage para Session #507324
14/01/2015
0
protected EntityManager getEm() {
em = EntityManagerUtil.getEntityManager();
return em;
}
protected Query createQuery(String query, Object... values) {
Query qr = getEm().createQuery(query);
//Query qr = getEntityManager().createNamedQuery(query);
if (values != null) {
for (int i = 0; i < values.length; i++) {
Object obj = values[i];
qr.setParameter(i + 1, obj);
}
}
return qr;
}
John Lima
Curtir tópico
+ 0Posts
16/01/2015
Ronaldo Lanhellas
private static SessionFactory factory;
protected EntityManager getEm() {
em = EntityManagerUtil.getEntityManager();
return em;
}
private Session getSession(){
if (factory == null){
factory = new Configuration().configure().buildSessionFactory();
}
return factory.openSession();
}
protected Query createQuery(String query, Object... values) {
Query qr = getSession().createQuery(query);
//Query qr = getSession().createNamedQuery(query);
if (values != null) {
for (int i = 0; i < values.length; i++) {
Object obj = values[i];
qr.setParameter(i + 1, obj);
}
}
return qr;
}
Gostei + 0
16/01/2015
John Lima
protected <T> T getPurePojo(Class<T> classTocast, String query, Object... values) {
try {
iniciarTransacao();
Query qr = createQuery(query, values);
T toReturn;
toReturn = (T) qr.getSingleResult();
commitTransacao();
return toReturn;
} catch (Exception e) {
rollbackTransacao();
UtilMensagens.mensagemErro("Transação não realizada erro \n: "
+ UtilErros.getMensagemErro(e));
return null;
}
}
protected <T> List<T> getList(Class<T> classTocast, String query, Object... values) {
try {
iniciarTransacao();
Query qr = createQuery(query, values);
List<T> toReturn = qr.getResultList();
commitTransacao();
return toReturn;
} catch (Exception e) {
rollbackTransacao();
UtilMensagens.mensagemErro("Transação não realizada erro \n: "
+ UtilErros.getMensagemErro(e));
return null;
}
}
Gostei + 0
16/01/2015
Ronaldo Lanhellas
Gostei + 0
16/01/2015
Ronaldo Lanhellas
Gostei + 0
16/01/2015
Ronaldo Lanhellas
Gostei + 0
16/01/2015
John Lima
position beyond number of declared ordinal parameters. remember that ordinal parameters are 1-based
poderia da um exemplo da sugestão acima
Gostei + 0
16/01/2015
Ronaldo Lanhellas
position beyond number of declared ordinal parameters. remember that ordinal parameters are 1-based
poderia da um exemplo da sugestão acima
Em relação ao erro, você tem que iniciar do valor 0 no setParameter e não do valor 1, então o certo seria:
qr.setParameter(i, obj); //Onde i = 0, 1 ,2 ,3 ...
Um exemplo do uso de interfaces seria:
public interface MeuDAO{
..
}
public class MeuDAOSessionImpl implements MeuDAO{
//métodos necessário para criar query usando SESSION
}
public class MeuDAOEntityManagerImpl implements MeuDAO{
//métodos necessário para criar query usando EntityManager
}
public class MainApp{
public static void main(String args[]){
//Quando quiser usar Session
MeuDAO md = new MeuDAOSessionImpl();
//Quando quiser usar EntityManager
MeuDAO md = new MeuDAOEntityManagerImpl();
//Ambos tem os mesmo métodos
md.createQuery(...);
}
}
Gostei + 0
16/01/2015
John Lima
teria que usar a query assim :
select b from Banco b where b.nome like ?
em vez
select b from Banco b where b.nome like ?1, porem se existir a troca de parâmetro ele vai funcionar ?
Gostei + 0
16/01/2015
Ronaldo Lanhellas
teria que usar a query assim :
select b from Banco b where b.nome like ?
em vez
select b from Banco b where b.nome like ?1, porem se existir a troca de parâmetro ele vai funcionar ?
Você não precisa colocar o número "1" depois do like, apenas o ponto de integorração e o próprio hibernate irá ordenar na sequencia em que está sendo lido.
Gostei + 0
16/01/2015
John Lima
public Session getSession() {
if (factory == null) {
factory = new Configuration().configure().buildSessionFactory();
}
return factory.openSession();
}
ou
if(session==null){
session = HibernateUtil.getSessionFactory().openSession();
}
Gostei + 0
16/01/2015
Ronaldo Lanhellas
public Session getSession() {
if (factory == null) {
factory = new Configuration().configure().buildSessionFactory();
}
return factory.openSession();
}
ou
if(session==null){
session = HibernateUtil.getSessionFactory().openSession();
}
Eu usaria e uso o EntityManager, por tratar-se de uma abstração mais o JPA e não a um framework em específico como Hibernate ou TopLink. Se amanhã eu resolver trocar de Hibernate para TopLink, não terei problema algum.
Gostei + 0
17/01/2015
John Lima
1ublic static Response getAllFromQuery(
Map filteredColumns,
ArrayList currentSortedColumns,
ArrayList currentSortedVersusColumns,
Class valueObjectType,
String baseSQL,
Object[] paramValues,
Type[] paramTypes,
String tableName,
SessionFactory sessions,
Session sess
) throws Exception {
return getAllFromQuery(
new HashMap(),
filteredColumns,
currentSortedColumns,
currentSortedVersusColumns,
valueObjectType,
baseSQL,
paramValues,
paramTypes,
tableName,
sessions,
sess
);
}
Gostei + 0
19/01/2015
Ronaldo Lanhellas
1ublic static Response getAllFromQuery(
Map filteredColumns,
ArrayList currentSortedColumns,
ArrayList currentSortedVersusColumns,
Class valueObjectType,
String baseSQL,
Object[] paramValues,
Type[] paramTypes,
String tableName,
SessionFactory sessions,
Session sess
) throws Exception {
return getAllFromQuery(
new HashMap(),
filteredColumns,
currentSortedColumns,
currentSortedVersusColumns,
valueObjectType,
baseSQL,
paramValues,
paramTypes,
tableName,
sessions,
sess
);
}
Se esse método foi você quem criou então é fácil adaptar, pode até fazer um overload dele.
Gostei + 0
19/01/2015
Ronaldo Lanhellas
1ublic static Response getAllFromQuery(
Map filteredColumns,
ArrayList currentSortedColumns,
ArrayList currentSortedVersusColumns,
Class valueObjectType,
String baseSQL,
Object[] paramValues,
Type[] paramTypes,
String tableName,
SessionFactory sessions,
Session sess
) throws Exception {
return getAllFromQuery(
new HashMap(),
filteredColumns,
currentSortedColumns,
currentSortedVersusColumns,
valueObjectType,
baseSQL,
paramValues,
paramTypes,
tableName,
sessions,
sess
);
}
Se esse método foi você quem criou então é fácil adaptar, pode até fazer um overload dele.
Gostei + 0
19/01/2015
John Lima
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)