为什么有一个具有实体名称的类加上JPA实体类的下划线

ken*_*ala 6 java hibernate jpa database-schema

我是JPA的新手,我创建了一个类如下的类

/**
 * 
 */
package programme;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * @author anoop
 *
 */
@Entity
@Table(name="course")
@Access(AccessType.FIELD)
public class programme {
    @Id private int id;
    private String name;
    private int year;
    @Transient private String comments;

    //getters and setters for the fields.
}
Run Code Online (Sandbox Code Playgroud)

我注意到有另一个类名作为我的实体java类Programme.java,带有下划线,即Programme_.java.什么是这个类,为什么会这样生成.有什么方法可以阻止它的产生吗?

Programme_.java类的代码如下.

package programme;

import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;

@Generated(value="Dali", date="2014-04-27T21:32:59.433+0530")
@StaticMetamodel(programme.class)
public class programme_ {
    public static volatile SingularAttribute<programme, Integer> id;
    public static volatile SingularAttribute<programme, String> name;
    public static volatile SingularAttribute<programme, Integer> year;
    public static volatile SingularAttribute<programme, String> comments;
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*rgh 11

这是你的"Canonical Metamodel".它可以与JPA Criteria API一起使用,如JPA 2.x规范(第6.2节)所述.

要阻止Eclipse生成这些类:编辑Eclipse项目属性> JPA> Canonical元模型(JPA 2.0)>源文件夹 - 将文件夹的值设置为"".