Hello again Pinaki!

I'm running this simple test:

import java.util.*;
import javax.persistence.*;
import br.unicsul.model.*;
import br.unicsul.sistema.Utility;
import org.apache.openjpa.slice.SlicePersistence;

public class Main {

    public static void main(String args[]) {

        Properties props = new Properties();

        EntityManagerFactory factory =
Persistence.createEntityManagerFactory("PersistenceUnit", props);
        EntityManager em2 = factory.createEntityManager();

        Query q = em2.createQuery("select p from Livro p");
        q.setHint("openjpa.hint.slice.Target", "TWO");

        for (Livro v : (List<Livro>) q.getResultList()) {

            System.out.println("Returned Slice --> " +
SlicePersistence.getSlice(v));

            System.out.println("Retorno do BD --> " + v.getNome() + "
(created on: " + v.getDtInsert() + ")"); 
            System.out.println("Retorno JSON --> " + Utility.toJSON(v));

        }

        em2.close();
        factory.close();

    }

}


if i put the hint "TWO" the program return this message
2027  PersistenceUnit.ONE  TRACE  [main] openjpa.jdbc.SQL - <t 16916276,
conn 5156931> executing prepstmnt 17226426 SELECT t0.id, t0.DTYPE, t0.db,
t0.dt_insert, t0.tx_descricao, t0.vc_destaque, t0.vl_estoque, t0.vc_nome,
t0.vl_preco, t1.id, t1.db, t1.dt_insert, t1.vc_nome, t2.id, t2.db,
t2.dt_insert, t2.vc_nome, t0.it_ano, t0.it_edicao, t3.id, t3.db,
t3.dt_insert, t3.vc_logo, t3.vc_nome, t3.vc_site, t0.vc_isbn, t0.it_paginas
FROM produto t0 LEFT OUTER JOIN secao t1 ON t0.pai = t1.id LEFT OUTER JOIN
editora t3 ON t0.editora = t3.id LEFT OUTER JOIN secao t2 ON t1.pai = t2.id
WHERE t0.DTYPE = ? [params=(String) Livro]

if i put the hint "TWO" the program return this message
1411  PersistenceUnit.ONE  TRACE  [main] openjpa.jdbc.SQL - <t 16916276,
conn 5156931> executing prepstmnt 4579880 SELECT t0.id, t0.DTYPE, t0.db,
t0.dt_insert, t0.tx_descricao, t0.vc_destaque, t0.vl_estoque, t0.vc_nome,
t0.vl_preco, t1.id, t1.db, t1.dt_insert, t1.vc_nome, t2.id, t2.db,
t2.dt_insert, t2.vc_nome, t0.it_ano, t0.it_edicao, t3.id, t3.db,
t3.dt_insert, t3.vc_logo, t3.vc_nome, t3.vc_site, t0.vc_isbn, t0.it_paginas
FROM produto t0 LEFT OUTER JOIN secao t1 ON t0.pai = t1.id LEFT OUTER JOIN
editora t3 ON t0.editora = t3.id LEFT OUTER JOIN secao t2 ON t1.pai = t2.id
WHERE t0.DTYPE = ? [params=(String) Livro]

if i put the hint "ONE, TWO" the program return this message
1296  PersistenceUnit.ONE  TRACE  [main] openjpa.jdbc.SQL - <t 1256167, conn
6666040> executing prepstmnt 15021407 SELECT t0.id, t0.DTYPE, t0.db,
t0.dt_insert, t0.tx_descricao, t0.vc_destaque, t0.vl_estoque, t0.vc_nome,
t0.vl_preco, t1.id, t1.db, t1.dt_insert, t1.vc_nome, t2.id, t2.db,
t2.dt_insert, t2.vc_nome, t0.it_ano, t0.it_edicao, t3.id, t3.db,
t3.dt_insert, t3.vc_logo, t3.vc_nome, t3.vc_site, t0.vc_isbn, t0.it_paginas
FROM produto t0 LEFT OUTER JOIN secao t1 ON t0.pai = t1.id LEFT OUTER JOIN
editora t3 ON t0.editora = t3.id LEFT OUTER JOIN secao t2 ON t1.pai = t2.id
WHERE t0.DTYPE = ? [params=(String) Livro]
1298  PersistenceUnit.ONE  TRACE  [main] openjpa.jdbc.SQL - <t 1256167, conn
6666040> [1 ms] spent
1067  PersistenceUnit.TWO  TRACE  [main] openjpa.jdbc.SQL - <t 1256167, conn
2889719> executing prepstmnt 28220074 SELECT t0.id, t0.DTYPE, t0.db,
t0.dt_insert, t0.tx_descricao, t0.vc_destaque, t0.vl_estoque, t0.vc_nome,
t0.vl_preco, t1.id, t1.db, t1.dt_insert, t1.vc_nome, t2.id, t2.db,
t2.dt_insert, t2.vc_nome, t0.it_ano, t0.it_edicao, t3.id, t3.db,
t3.dt_insert, t3.vc_logo, t3.vc_nome, t3.vc_site, t0.vc_isbn, t0.it_paginas
FROM produto t0 LEFT OUTER JOIN secao t1 ON t0.pai = t1.id LEFT OUTER JOIN
editora t3 ON t0.editora = t3.id LEFT OUTER JOIN secao t2 ON t1.pai = t2.id
WHERE t0.DTYPE = ? [params=(String) Livro]
1069  PersistenceUnit.TWO  TRACE  [main] openjpa.jdbc.SQL - <t 1256167, conn
2889719> [1 ms] spent


So i don't understand what's happening... my XML it's here:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
  <persistence-unit name="PersistenceUnit"
transaction-type="RESOURCE_LOCAL">
   
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <class>br.unicsul.model.Global</class>
    <class>br.unicsul.model.Produto</class>
    <class>br.unicsul.model.Livro</class>
    <class>br.unicsul.model.Editora</class>
    <class>br.unicsul.model.Autor</class>
    <class>br.unicsul.model.Secao</class>
    <class>br.unicsul.model.Cliente</class>
    <class>br.unicsul.model.Pedido</class>
    <class>br.unicsul.model.PedidoItem</class>
    <properties>
      <!-- TURN ON THE SLICES -->
      <property name="openjpa.BrokerFactory" value="slice"/>
      <property name="openjpa.slice.Names" value="ONE, TWO"/>
      <property name="openjpa.slice.Master" value="ONE"/>
      <property name="openjpa.slice.DistributionPolicy"
value="br.unicsul.sistema.DistributionRules"/>
      <!-- TURN ON THE SLICES -->
      <!-- THE SLICES DEFAULT SLICE -->
      <property name="openjpa.ConnectionURL"
value="jdbc:sqlserver://TANANIAS-D\SQLEXPRESS;database=cadastro;user=sa;password=testando123"/>
      <property name="openjpa.ConnectionDriverName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
      <!-- THE SLICES DEFAULT SLICE -->
      <!-- SQLServer, the first Slice -->
      <property name="openjpa.slice.ONE.ConnectionURL"
value="jdbc:sqlserver://TANANIAS-D\SQLEXPRESS;database=cadastro;user=sa;password=testando123"/>
      <property name="openjpa.slice.ONE.ConnectionDriverName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
      <!-- SQLServer, the first Slice -->
      <!-- MySql the second Slice -->
      <property name="openjpa.slice.TWO.ConnectionURL"
value="jdbc:mysql://localhost:3306/cadastro"/>
      <property name="openjpa.slice.TWO.ConnectionDriverName"
value="com.mysql.jdbc.Driver"/>
      <property name="openjpa.slice.TWO.ConnectionUserName" value="root"/>
      <property name="openjpa.slice.TWO.ConnectionPassword" value="sa"/>
      <!-- MySql the second Slice -->
      
      <!-- CONFIGURATION FOR CREATE A CLEAN DATABASE 
      <property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(SchemaAction=&apos;add&apos;)"/>
      <property name="openjpa.slice.TWO.jdbc.SynchronizeMappings"
value="buildSchema(SchemaAction=&apos;add&apos;)"/>
      <property name="openjpa.slice.ONE.jdbc.SynchronizeMappings"
value="buildSchema(SchemaAction=&apos;add&apos;)"/>
       CONFIGURATION FOR CREATE A CLEAN DATABASE -->

      <!-- SHOW LOGs -->
      <property name="openjpa.Log" value="DefaultLevel=WARN, Enhance=TRACE,
SQL=TRACE"/>
      <property name="openjpa.slice.ONE.Log" value="DefaultLevel=WARN,
Enhance=TRACE, SQL=TRACE"/>
      <property name="openjpa.slice.TWO.Log" value="DefaultLevel=WARN,
Enhance=TRACE, SQL=TRACE"/>
      <!-- SHOW LOGs -->
    </properties>
  </persistence-unit>
</persistence>


Thanks for the help!

Regards

Thiago Ananias








Pinaki Poddar wrote:
> 
> Hi,
>   I have verified hints against OpenJPA test bucket [1] and I do not see
> any error.
>   org.apache.openjpa.slice.TestQuery.java#testHint().
> 
>   May be you can post a small test with the persistence.xml?
> 
> 
> 
> thiago ananias wrote:
>> 
>> 
>> 
>> Pinaki Poddar wrote:
>>> 
>>> Hi,
>>>> I put the Slice "ONE", but when i remove the "hint" clause the result
>>>> comes for me, but i know that at 
>>>> least one result have to return in this query, i don't know what i'am
>>>> doing wrong...
>>> 
>>>   Your question is not clear to me. 
>>>   1. Please explain further
>>>   2. Examine the generated SQL. Each executed SQL is logged with the
>>> slice name it has been executed on. When you query with or without the
>>> hint -- what SQLs do you see? On which slices are these SQLs being
>>> executed?
>>>   
>>> 
>> 
>> OK, let explain the problem!
>> 
>> I'm making a targered query
>>         Query query = em.createQuery("SELECT c FROM Cliente c WHERE
>> c.email = :email AND c.senha = :senha");
>>         query.setParameter("email", email);
>>         query.setParameter("senha", senha);
>>         query.setHint("openjpa.hint.slice.Target", "TWO");
>> 
>> With this query i want the results of the Slice named "TWO" but the SQL
>> log sent this for me:
>> 
>> "2078  PersistenceUnit.ONE  TRACE  [http-8084-1] openjpa.jdbc.SQL - <t
>> 21111684, conn 11387974> executing prepstmnt 2867588 SELECT t0.id, t0.db,
>> t0.dt_insert, t0.vc_bairro, t0.vc_cep, t0.vc_cidade, t0.vc_complemento,
>> t0.dt_nascimento, t0.vc_email, t0.vc_endereco, t0.vc_estado, t0.vc_nome,
>> t0.vc_numero, t0.vc_rg, t0.vc_senha, t0.vc_sexo, t0.vc_telefone FROM
>> cliente t0 WHERE (t0.vc_email = ? AND t0.vc_senha = ?) [params=(String)
>> [EMAIL PROTECTED], (String) 010203]"
>> 
>> I put Slice two in the query but it returns for me the slice one...what
>> i'm doing wrong?
>> 
>> Regards
>> 
>> Thiago Ananias
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/Targeted-Query-in-Slices-tp1580324p1588895.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to