1

我正在完成一个通过 eclipseLink 连接到 derby 数据库的 GWT 项目,而 ORM 是通过 JPA 完成的。一开始我有一个登录和注册按钮。当我打开一个会话,从 Eclipse 中运行项目时,我注册了一个新用户并使用这个用户登录,一切正常。当我现在退出该会话时,我可以在数据库中看到该用户。当我现在开始一个新会话时,我仍然可以在数据库中看到该用户。当我现在尝试在新会话中登录时,登录按钮会实例化一个新的实体管理器,该管理器第一次再次连接到数据库并运行选择查询,以检查用户,我尝试登录。只要我使用该功能,一切似乎都运行良好,这是我的服务的服务器端实现的一部分。

public Fellow getUser(String username) {
    ObjectManager.checkIfOMisOpen();
    EntityTransaction tx = ObjectManager.em.getTransaction();
    tx.begin();
    TypedQuery<Fellow> checkUser = ObjectManager.em.createQuery(
            "SELECT m FROM Fellow m WHERE " + "m.username = '" + username
                    + "'", Fellow.class);
    tx.commit();
    List<Fellow> listUser = checkUser.getResultList();
    if (listUser.isEmpty())
        return null;
    return listUser.get(0);
}

该函数检查对象管理器(它是数据库操作的管理器)是否打开,然后尝试通过查询获取用户。由于此功能中的任何原因,项目的所有对象都会被删除......仅当我尝试在新会话中登录时......

有人有建议吗?这是截止日期前的最后几个小时大问题:D 提前致谢

ps:这里是persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="...." transaction-type="RESOURCE_LOCAL"> 
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>class1</class>
        <class>class2</class>
        <class>class3</class>
        <class>class4</class>
        <class>class5</class>
        <properties>
            <property name="javax.persistence.target-database" value="Derby"/>
            <property name="javax.persistence.jdbc.driver" 
                value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="javax.persistence.jdbc.url" 
              value="jdbc:derby:....;create=true"/> 
            <property name="javax.persistence.jdbc.user" value="..."/> 
            <property name="javax.persistence.jdbc.password" value="..."/>
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <property name="eclipselink.logging.level" value="SEVERE"/> 
        </properties>
    </persistence-unit>
</persistence>

第 3 类继承第 4 类,我发现问题只发生在与这些对象的映射关系中......

4

0 回答 0