0

いくつかのクラスを作成してデータを取得しようとしていますが、例外がスローされます。
私は見つけることができません。
これが私のコードです....

データベースにテーブル LogIn を作成する LogIn クラスです。

package entity_classes;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;

@Entity
public class LogIn{

@EmbeddedId
private PrimaryKeyLogIn primarykeylogin=new PrimaryKeyLogIn();

public PrimaryKeyLogIn getPrimarykeylogin() {
    return primarykeylogin;
}

public void setPrimarykeylogin(PrimaryKeyLogIn primarykeylogin) {
    this.primarykeylogin = primarykeylogin;
}



}

これは、LogIn テーブルに複合主キーを作成するために埋め込まれた PrimaryKeyLogIn クラスです。

package entity_classes;

import java.io.Serializable;

import javax.persistence.Embeddable;

@Embeddable
public class PrimaryKeyLogIn implements Serializable{


private static final long serialVersionUID = 1L;
String Username,Password,Type;

public PrimaryKeyLogIn(){}

public String getUsername() {
    return Username;
}

public void setUsername(String username) {
    Username = username;
}

public String getPassword() {
    return Password;
}

public void setPassword(String password) {
    Password = password;
}

public String getType() {
    return Type;
}

public void setType(String type) {
    Type = type;
}


}

これは、Exception をスローすると私が考えたメイン クラス CheckLogIn です。

package entity_classes;

public class CheckLogIn {

public boolean getuser()
{
    LogIn l=new LogIn();
    LogIn lg=new LogIn();
    PrimaryKeyLogIn pkg=new PrimaryKeyLogIn();
    PrimaryKeyLogIn pklg=new PrimaryKeyLogIn();
    pklg.setUsername("KAMANI");
    pklg.setPassword("KAMANI");
    pklg.setType("Admin");
    lg.setPrimarykeylogin(pklg);

    SessionCreator.session=SessionCreator.sessionfactory.openSession();
    SessionCreator.session.beginTransaction();
    l=(LogIn) SessionCreator.session.get(LogIn.class,pkg);
    pkg=l.getPrimarykeylogin();
    System.out.println(pkg.getUsername());
    SessionCreator.session.getTransaction().commit();
    SessionCreator.session.close();
    /*if(pkg.getUsername().equals(pklg.getUsername())&&pkg.getPassword().equals(pklg.getPassword())&&pkg.getType().equals(pklg.getType()))
        return true;
    else
        return false;*/
    return true;

}

public static void main(String args[])
{
    CheckLogIn cli=new CheckLogIn();
    cli.getuser();
}

}

今、CheckLogInコードの上で実行していると、前と同じですが静かに単純化された次の例外が表示されます。ここでは CheckLogIn で main メソッドを使用していることに注意してください。そのため、そのクラスを実行しているだけで、引数は渡されません。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Hibernate: select login0_.Password as Password0_0_, login0_.Type as Type0_0_, login0_.Username as Username0_0_ from LogIn login0_ where login0_.Password=? and login0_.Type=? and login0_.Username=?
Exception in thread "main" java.lang.NullPointerException
at entity_classes.CheckLogIn.getuser(CheckLogIn.java:19)
at entity_classes.CheckLogIn.main(CheckLogIn.java:34)
4

1 に答える 1

0

ごめん!長い間デバッグした後、小さな間違いを見つけました。

ここでは、pklg オブジェクトを渡す必要があります。

CheckLogIn クラスにある正しいコードを書いています。

l=(LogIn) SessionCreator.session.get(LogIn.class,pklg);

pkg オブジェクトを渡したときに null ポインター例外がスローされます。

于 2013-08-03T19:15:18.267 に答える