JPA - 仅检索主键,其他字段返回null

时间:2013-05-07 06:11:08

标签: java-ee jpa eclipselink

我是Java EE的新手 我正在使用Eclipse Juno + Eclipse Link + MySQL 目前我有一个JPA项目和一个动态网络项目 JPA项目包含在Web项目的构建路径中 我在JPA项目中创建了一个“StudentDomain”类来从Student表中检索行 它在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;
    }

}

1 个答案:

答案 0 :(得分:2)

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

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

这只是本机SQL的一个问题。您也可以尝试使用JPQL查询,例如em.createQuery(“从学生中选择s”)。