2013-06-13 3 views
2

으로 데이터베이스에 개체를 삽입 할 수 없습니다내가 HSQLDB에 ActiveJDBC 사용하기 위해 노력하고있어 ActiveJDBC

Base.open("org.hsqldb.jdbc.JDBCDriver", "jdbc:hsqldb:file:queen-db;shutdown=true;hsqldb.write_delay=false;", "sa", ""); 

    User e = new User(); 
    e.set("id", 1); 
    e.set("nickname", "Superman"); 
    e.set("first_name", "John"); 
    e.set("last_name", "Doe"); 
    e.saveIt(); 

    User e1 = new User(); 
    e1.set("id", 2); 
    e1.set("nickname", "Superman2"); 
    e1.set("first_name", "John2"); 
    e1.set("last_name", "Doe2"); 
    e1.saveIt(); 

    List<User> users = User.findAll(); 

    for (User user : users) { 
     System.out.println(user.get("id") + " " + user.get("nickname") + " " + user.get("first_name") + " " + user.get("last_name")); 
    } 

하지만 출력이없는, 그리고 DB에 아무런 정보가 없습니다.

은 어떤 문제가
CREATE TABLE users (
    id INT NOT NULL, 
    nickname VARCHAR(100) NOT NULL, 
    first_name VARCHAR(100) NOT NULL, 
    last_name VARCHAR(100) NOT NULL 
); 

: 여기 내 이동 경로 이동입니까?

ADD :

0 [main] INFO hsqldb.db.HSQLDB3F3E800675.ENGINE - checkpointClose start 
35 [main] INFO hsqldb.db.HSQLDB3F3E800675.ENGINE - checkpointClose end 

UPDATE : Log4J를 잘 살고는 메시지를 가지고 여기

0 [main] INFO hsqldb.db.HSQLDB3F42F00869.ENGINE - checkpointClose start 
37 [main] INFO hsqldb.db.HSQLDB3F42F00869.ENGINE - checkpointClose end 
68 [main] INFO org.javalite.activejdbc.ConnectionsAccess - Attaching connection: [email protected] 
68 [main] INFO org.javalite.activejdbc.ConnectionsAccess - Opened connection:[email protected] named: default on thread: Thread[main,5,main] 
97 [main] INFO org.javalite.activejdbc.Configuration - Load models from: jar:file:/Users/dmitrysavchenko/projects/hive-queen/target/queen-jar-with-dependencies.jar!/activejdbc_models.properties 
116 [main] INFO org.javalite.activejdbc.Registry - Registered model: class org.hive.models.User 
285 [main] INFO org.javalite.activejdbc.Registry - Fetched metadata for table: users 
302 [main] INFO org.javalite.activejdbc.DB - Query: "UPDATE users SET first_name= ?, nickname= ?, last_name= ? where id = ?", with parameters: <John>, <Superman>, <Doe>, <1>, took: 11 milliseconds 
305 [main] INFO org.javalite.activejdbc.DB - Query: "UPDATE users SET first_name= ?, nickname= ?, last_name= ? where id = ?", with parameters: <John2>, <Superman2>, <Doe2>, <2>, took: 0 milliseconds 
315 [main] INFO org.javalite.activejdbc.LazyList - Query: "SELECT * FROM users", took: 4 milliseconds 

수행을 잘못 조작 같은데 출력을 로그입니다. 뭐가 문제 야?

+0

그 메시지의 시간 기록은 무엇입니까? – Mubin

+0

편집을 참조하십시오. – skayred

+0

시스템 속성 -Dactivejdbc.log를 추가하여 로깅을 활성화하십시오. 그러면 DB로 보내지는 모든 생성 된 SQL 문을 출력합니다. – Mubin

답변

2

ID 속성에 문제가있었습니다. 기본 ActiveJDBC 동작은 다음과 같습니다. ID 특성이 null이면 레코드를 만들고 값이 있으면 업데이트합니다.

User e = new User(); 
e.set("id", 1); 
e.set("nickname", "Superman"); 
e.set("first_name", "John"); 
e.set("last_name", "Doe"); 
e.insert(); 

중요 : 제 경우에는 그냥 다음 코드를 사용했습니다!insert은 구 버전에서 구할 수 없으므로 1.4.7 이상을 사용하십시오.

관련 문제