elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Temas
Páginas: [1]
1  Programación / Java / duda con Db4o con java en: 3 Marzo 2009, 13:35 pm
Lo que quiero hacer es crear una base de datos cerrarla luego abrirla y hacer una consulta. Las demas clases (player,team..) contienen atributos y metodos get y set.


Este es el codigo en java:

Código
  1. import com.db4o.*;
  2. import com.db4o.query.*;
  3.  
  4. import java.io.File;
  5.  
  6.  
  7. import java.util.Iterator;
  8.  
  9. public class Db4oTest {
  10.    private static String filename;
  11.  
  12.  
  13.    public Db4oTest() {
  14.        filename = "c:/teamsdemo.yap";
  15.    }
  16.  
  17.    public static void main(String[] args){
  18.        Db4oTest tester = new Db4oTest();
  19.        tester.createTestData();
  20.        tester.queryByExampleDemo();
  21.  
  22.    }
  23.  
  24.    /**
  25.      * creates test objects and stores them in new database file
  26.      */
  27.  
  28. private void createTestData(){
  29.        System.out.println("Creamos base de datos");
  30.  
  31.        // Create Players
  32.        Player p1 = new Player("Barry Bonds", 25, 0.362f);
  33.        Player p2 = new Player("Marquis Grissom", 9, 0.279f);
  34.        Player p3 = new Player("Ray Durham", 5, 0.282f);
  35.        Player p4 = new Player("Adrian Beltre", 29, 0.334f);
  36.        Player p5 = new Player("Cesar Izturis", 3, 0.288f);
  37.        Player p6 = new Player("Shawn Green", 15, 0.266f);
  38.  
  39.        // Create Pitchers
  40.        Player p7 = new Pitcher("Kirk Rueter",46, 0.131f, 9);
  41.        Player p8 = new Pitcher("Kazuhisa Ishii",17, 0.127f, 13);
  42.  
  43.        // Create Teams
  44.        Team t1 = new Team("Giants", "San Francisco", 91, 71);
  45.        Team t2 = new Team("Dodgers", "Los Angeles", 93, 69);
  46.  
  47.        // Add Players to Teams
  48.        t1.addPlayer(p1); p1.setTeam(t1);
  49.        t1.addPlayer(p2); p2.setTeam(t1);
  50.        t1.addPlayer(p3); p3.setTeam(t1);
  51.        t2.addPlayer(p4); p4.setTeam(t2);
  52.        t2.addPlayer(p5); p5.setTeam(t2);
  53.        t2.addPlayer(p6); p6.setTeam(t2);
  54.  
  55.        // Add Pitchers to Teams
  56.        t1.addPlayer(p7); p7.setTeam(t1);
  57.        t2.addPlayer(p8); p8.setTeam(t2);
  58.  
  59.        // Open a new database
  60.        new File(filename).delete();
  61.        ObjectContainer db = Db4o.openFile(filename);
  62.  
  63.        // Store Teams - also stores associated Players
  64.        //db.set(t1);
  65.        db.store(t1);
  66.        System.out.println("Stored " + t1);
  67.        //db.set(t2);
  68.        db.store(t2);
  69.        System.out.println("Stored " + t2);
  70.  
  71.        // Close database
  72.       db.close();
  73.  
  74. }
  75.  
  76.  
  77.  
  78.    /**
  79.      * Demonstrates query-by-example
  80.      */
  81.  
  82. private void queryByExampleDemo(){
  83.  
  84.  
  85.        // Open database
  86.        ObjectContainer db = Db4o.openFile(filename);
  87.        // Retrieve a Player by creating an example Player object
  88.        Player examplePlayer = new Player("Barry Bonds",0,0f);
  89.        ObjectSet result=db.queryByExample(examplePlayer);
  90.  
  91.        System.out.println(result.size());
  92.        while(result.hasNext()) {
  93.            System.out.println(result.next());
  94.        }
  95.        result.reset();
  96.  
  97.        // Retrieve a Team and all Players
  98.        Team exampleTeam = new Team("Dodgers",null, 0, 0);
  99.        result=db.queryByExample(exampleTeam);
  100.  
  101.        // List results
  102.        System.out.println(result.size());
  103.        while (result.hasNext()){
  104.            Team t = (Team) result.next();
  105.            System.out.println(t);
  106.            Iterator itr = t.getPlayers().iterator();
  107.            while (itr.hasNext()) {
  108.                Player p = (Player) itr.next();
  109.                System.out.println(p);
  110.            }
  111.        }
  112.  
  113.        // Close database
  114.        db.close();
  115.    }
   
   Salta el siguiente error:

Exception in thread "main" java.lang.ClassCastException: Player cannot be cast to com.db4o.reflect.generic.GenericObject
   at com.db4o.reflect.generic.GenericField.get(GenericField.java:36)
   at com.db4o.internal.FieldMetadata.getOn(FieldMetadata.java:582)
   at com.db4o.internal.FieldMetadata.collectConstraints(FieldMetadata.java:338)
   at com.db4o.internal.ClassMetadata$3.apply(ClassMetadata.java:447)
   at com.db4o.internal.ClassMetadata.forEachDeclaredAspect(ClassMetadata.java:1968)
   at com.db4o.internal.ClassMetadata.forEachAspect(ClassMetadata.java:1949)
   at com.db4o.internal.ClassMetadata.forEachField(ClassMetadata.java:1939)
   at com.db4o.internal.ClassMetadata.collectConstraints(ClassMetadata.java:443)
   at com.db4o.internal.query.processor.QConObject.associateYapClass(QConObject.java:82)
   at com.db4o.internal.query.processor.QConObject.byExample(QConObject.java:421)
   at com.db4o.internal.PartialObjectContainer.queryByExampleInternal(PartialObjectContainer.java:757)
   at com.db4o.internal.PartialObjectContainer.queryByExample(PartialObjectContainer.java:741)
   at com.db4o.internal.ExternalObjectContainer.queryByExample(ExternalObjectContainer.java:75)
   at com.db4o.internal.ExternalObjectContainer.get(ExternalObjectContainer.java:71)
   at Db4oTest.queryByExampleDemo(Db4oTest.java:102)
   at Db4oTest.main(Db4oTest.java:25)
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines