“DataNucleus Enhancer已完成,但出现错误”

时间:2014-01-19 01:55:15

标签: eclipse google-app-engine

尝试创建一个模型类,使用Eclipse在Google App Engine中存储实体。但是当我保存我的工作时,我收到错误消息:

  

org.datanucleus.metadata.MetaDataManager initialiseFileMetaDataForUse。
  SEVERE:类“com.packagename.classname”已使用object-id类javax.jdo.identity.StringIdentity指定,但尚未将任何字段标识为主键字段。请注意对应被视为主键一部分的字段使用“primary-key”标记。

如果我对JPA的理解是正确的,我不需要primary-key作为实体,因为我已经有@Id标记。这是我的班级。

@Entity
  public class MyCLassName {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private static String userName;

private static String location;
private static Date dateOfBirth;
private static int age;
private static String gender;
private static String teamName;
private static int weight;





//Constructor with arguments
public MyClassName(String userName, String location, String gender, int age, Date DOB, int weight) {
    MyClassName.userName = userName;
    MyClassName.location = location;
    MyClassName.gender = gender;
    MyClassName.age=age;
    MyClassName = DOB;
    MyClassName.weight = weight;

}
//setter methods
public static void setUserName(String userName) {
    MyClassName.userName = userName;
}

public static void setLocation(String location) {
    MyClassName.location = location;
}

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

public static void setAge(int age) {
    MyClassName.age = age;
}

public static void setDateOfBirth(Date dateOfBirth) {
    MyClassName.dateOfBirth = dateOfBirth;
}

public static void setWeight(int weight) {
     MyClassName.weight = weight;
}

//getter methods
public static String getUserName() {
    return userName;
}

public static int getWeight() {
    return weight;
}

public static String getLocation() {
    return location;
}

public static String getGender() {
    return gender;
}

public static String getTeamName() {
    return teamName;
}

public static Date getDateOfBirth() {
    return dateOfBirth;
}

public static int getAge() {
    return age;
}

    }

我到底做错了什么?

1 个答案:

答案 0 :(得分:1)

您对JPA的理解部分正确。您不需要分配主键,因为您已使用@Id和@GeneratedValue注释。 JPA实现将自动生成主键值作为长整数。但是,它仍然需要一个存储此ID值的字段。它试图在userName中执行此操作。例如,请参阅Java Tutorial ID Generation Type: IDENTITY