id列和JPA的问题

4 java hibernate jpa playframework

我正在为Play玩一个非常简单的类来试用JPA!框架,我在id列中遇到了一些问题.

我的sql数据库只有两列:

CREATE TABLE IF NOT EXISTS `auto` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
)
Run Code Online (Sandbox Code Playgroud)

我的模型是:

@Entity
@Table(name = "auto")
public class Auto extends Model{

    @Column(insertable = false, updatable = false)
    public int id;

    public String name;

    public Auto(String name){
        this.name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)

没有这部分,一切正常:

    @Column(insertable = false, updatable = false)
    public int id;
Run Code Online (Sandbox Code Playgroud)

一旦我添加,public int id;我会收到此错误:A JPA error occurred (Unable to build EntityManagerFactory): Repeated column in mapping for entity: models.Auto column: id (should be mapped with insert="false" update="false")

这就是我添加了列注释的原因,但它现在也没有用,现在我得到了:

A javax.persistence.PersistenceException has been caught, org.hibernate.PropertyAccessException: could not set a field value by reflection setter of models.Auto.id

我正在以这种方式测试模型:new Auto("bmw").save();save()是playframework中模型类的方法.

谁知道我为什么遇到这个问题?谢谢!

KoW*_*KoW 6

嗯,没有id字段就完全尝试.看起来Playframework会在扩展Model类时自动创建Id字段.看到这里:

"......如果你之前使用过JPA,你知道每个JPA实体都必须提供一个@Id属性.这里Model超类提供了一个自动生成的数字ID,在大多数情况下这已经足够了......."