2

私の Web アプリケーションに問題があります: 私が持っている管理 Bean で:

 private boolean isUserInDB() {
    List users = userFacade.findByLogin(registerLog);
    if(users.isEmpty())
        return false;
    return true;
}    

このメソッドが開始されると、この例外があります (おそらく userFacade から):

javax.el.ELException: javax.ejb.EJBException:The bean encountered a non-application exception; 
nested exception is: <openjpa-2.2.0-r422266:1244990 fatal general error> org.apache.openjpa.persistence.PersistenceException:
user lacks privilege or object not found: USER {SELECT t0.id_user, t0.login, t0.password FROM USER t0 WHERE (t0.login = ?)} [code=-5501, state=42501] 
FailedObject: SELECT u FROM User u WHERE u.login = :login [java.lang.String]

viewId=/pages/register.xhtml
location=/home/jakub/Projekty/Collv2/build/web/pages/register.xhtml
phaseId=INVOKE_APPLICATION(5)



Caused by:
org.apache.openjpa.lib.jdbc.ReportingSQLException - user lacks privilege or object not found: USER {SELECT t0.id_user, t0.login, t0.password FROM USER t0 WHERE (t0.login = ?)} [code=-5501, state=42501]
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:247)


or


Caused by:
org.apache.openjpa.lib.jdbc.ReportingSQLException - type not found or user lacks       
privilege: TEXT {stmnt 1932110061 CREATE TABLE COURSE (id_course SMALLINT NOT NULL,
code VARCHAR(255), description TEXT, name VARCHAR(255), realization INTEGER, version 
SMALLINT, PRIMARY KEY (id_course)) ENGINE = innodb} [code=-5509, state=42509]



/pages/register.xhtml at line 26 and column 104 action="#{registerController.register}"

User.class と UserFacade は、Netbeans で自動生成されます ("データベースからのエンティティ クラス..." および "エンティティ クラスからのセッション Beans...":

「ユーザーに権限がない」という意味を理解するのを手伝ってもらえますか?

編集:

問題はここにあります:

public List<User> findByLogin(String login){
    Query q = em.createNamedQuery("User.findByLogin").setParameter("login", login);
    List list = q.getResultList();
    return list;
}

クエリが作成されると、例外がスローされます

4

2 に答える 2

3

ステートメントの実行に使用するユーザーには、テーブルを作成するための適切な権限がありません。

@duffymo がコメントで言及しているように、使用者には適切な権限を付与する必要があります。私の経験では、アプリケーションの (技術的な) ユーザーにこれらの権限を与えることはお勧めできません。

テクニカル アプリケーション ユーザーとして使用されていないデータベース管理者で DB スキーマを作成します。

于 2013-09-16T13:42:25.470 に答える