0

我是 Java EE 的新手。
我正在使用 Eclipse Juno + Eclipse Link + MySQL。
目前我有一个 JPA 项目和一个动态 Web 项目。
JPA 项目包含在 Web 项目的构建路径中。
我在 JPA 项目中创建了一个类“StudentDomain”来从学生表中检索行。
它在 JPA 项目中运行良好。
但是在web项目中,只返回ID,其他字段,姓名,性别,邮箱都返回null。

例如:
SQL:SELECT * FROM Student;

在 JPA 项目中,我得到了以下结果:

ID Name   Gender Email
1  John   M      john@example.com
2  Emma   F      emma@example.com

在 Web Project 中,我得到了以下结果:

ID Name   Gender Email
1  null   null   null
2  null   null   null

下面是Student实体类的源码。

package model;

import java.io.Serializable;
import java.lang.String;
import javax.persistence.*;

@Entity
public class Student implements Serializable
{
    @Id
    @Column(name = "ID")
    private int id;

    @Column(name = "name")
    private String name;

    @Column(name = "gender")
    private String gender;

    @Column(name = "email")
    private String email;

    private static final long serialVersionUID = 1L;

    public Student()
    {
    }

    public int getId()
    {
        return this.id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getName()
    {
        return this.name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getGender()
    {
        return this.gender;
    }

    public void setGender(String gender)
    {
        this.gender = gender;
    }

    public String getEmail()
    {
        return this.email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

}
4

1 回答 1

2

你用的是什么版本?如果这是您正在执行的本机 SQL 查询,则可能是查询返回的列元数据的区分大小写问题。根据 EclipseLink 版本,您可以尝试将持久性属性“eclipselink.jpa.uppercase-column-names”设置为 true(在 EclipseLink 2.1 中添加),或者升级到默认为 true 的最新版本。

您还可以尝试确保列注释中定义的字段的大小写与从数据库返回的内容相匹配 - ID 列映射到“ID”,而其他列都为小写,这可能是数据库返回的问题默认情况下为大写列。

这只是本机 SQL 的问题。您也可以尝试使用 JPQL 查询,例如 em.createQuery("Select s from Student s")。

于 2013-05-07T12:43:40.360 回答