2015-04-22 42 views
1

我正在使用JDO Querydsl构建一个maven项目。但在我DaoImpl班一行显示的错误是:非静态变量角色无法从静态上下文中引用 - JDO Querydsl

我的POJO类是“非静态变量的作用,不能从静态上下文中引用”: User.java

@PersistenceCapable(table="User_Login") 
public class User { 
@PrimaryKey 
@Column(name="user_id") 
private Integer userId=0; 
@Column(name="user_profile_name") 
private String userProfileName=null; 
@Column(name="user_email") 
private String userEmail=null; 
@Column(name="user_contact") 
private String userContact=null; 
@Column(name="user_name") 
private String userName=null; 
@Column(name="user_password") 
private String userPassword=null; 
@Column(name="user_role_id") 
private Integer userRoleId=0; 

private Role userRole=null; 

Role.java :

@PersistenceCapable(table="User_Role") 
    public class Role { 
    @PrimaryKey 
    @Column(name="id") 
    private Integer roleId=0; 
    @Column(name="role") 
    private String role=null; 

我需要的结果将是:

用户ID:1,作用:管理

我DAOImpl类:

public List<User> getUser(String user_name, String user_password) { 
    PersistenceManager pm = 
     this.persistenceManagerFactory.getPersistenceManager(); 
    Transaction tx = pm.currentTransaction();  
    SQLTemplates templates = new MySQLTemplates();   
    QUser user = QUser.user; 
    QRole role = QRole.role;-----------**this is showing error**  
    JDOSQLQuery query = new JDOSQLQuery(pm, templates); 
    try { 
    // Start the transaction 
    tx.begin(); 
    List<User> result = query.from(user) 
        .innerJoin(role).on(user.userRoleId.eq(role.roleId)) 
        .where(user.userName.eq(user_name), 
      user.userPassword.eq(user_password)). 
      list(user);    
    query.close(); 
    tx.commit(); 
    return result; 
    } 
    finally { 
     if (tx.isActive()) 
     { 
      // Error occurred so rollback the transaction 
      tx.rollback(); 
     } 
     pm.close(); 
    } 

我的pom.xml的是:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.titas</groupId> 
<artifactId>QuerydslJDO</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>QuerydslJDO</name> 

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.1.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>4.1.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.1.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>4.1.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aspects</artifactId> 
     <version>4.1.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.jdo</groupId> 
     <artifactId>jdo-api</artifactId> 
     <version>3.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.mysema.querydsl</groupId> 
     <artifactId>querydsl-apt</artifactId> 
     <version>3.6.3</version> 
     <scope>provided</scope> 
    </dependency>    
    <dependency> 
     <groupId>com.mysema.querydsl</groupId> 
     <artifactId>querydsl-jdo</artifactId> 
     <version>3.6.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.mysema.querydsl</groupId> 
     <artifactId>querydsl-sql</artifactId> 
     <version>3.6.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir} 
         </outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed- 
           api</artifactId> 
           <version>6.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>com.mysema.maven</groupId> 
      <artifactId>apt-maven-plugin</artifactId> 
      <version>1.0.4</version> 
      <executions> 
       <execution> 
       <goals> 
        <goal>process</goal> 
       </goals> 
       <configuration> 
        <outputDirectory>target/generated-sources 
        /java</outputDirectory> 
        <processor>com.mysema.query.apt.jdo. 
        JDOAnnotationProcessor</processor> 
       </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-maven-plugin</artifactId> 
      <version>2.9.0</version> 
      <executions> 
       <execution> 
       <goals> 
        <goal>export</goal> 
       </goals> 
       </execution>    
      </executions> 
      <configuration> 
       <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver> 
       <jdbcUrl>jdbc:mysql://localhost:3306/login</jdbcUrl> 
       <jdbcUser>root</jdbcUser> 
       <packageName>com.titas.model</packageName> 
       <targetFolder>${project.basedir}/target/generated-sources 
       /java</targetFolder> 
      </configuration> 
      <dependencies> 
       <dependency> 
        <groupId>mysql</groupId> 
        <artifactId>mysql-connector-java</artifactId> 
        <version>5.1.6</version> 
       </dependency> 
      </dependencies> 
     </plugin>   
    </plugins> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
    </resources> 
</build> 

回答

2

既然你Role.java已经包含了属性 '角色' Querydsl无法生成您的标准变量“ QRole.role',所以它被命名为'QRole.role1'。

+0

为什么它没有连接到DB?我的注释可以连接到数据库? – Moumita

相关问题