gpt4 book ai didi

java - id 列和 JPA 的问题

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:11 24 4
gpt4 key购买 nike

我正在为 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`)
)

我的模型是:

@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;
}
}

没有这部分一切正常:

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

只要我添加 public int id; 我就会收到此错误:发生 JPA 错误(无法构建 EntityManagerFactory):实体映射中的重复列:模型。自动列:id(应该用 insert="false"update="false"映射)

这就是我添加列注释的原因,但它也不起作用,现在我得到:

已捕获 javax.persistence.PersistenceException,org.hibernate.PropertyAccessException:无法通过 models.Auto.id 的反射 setter 设置字段值

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

有人知道我为什么会遇到这个问题吗?谢谢!

最佳答案

嗯,完全没有 id 字段试试吧。看起来如果扩展 Model 类,Playframework 会自动创建一个 Id 字段。参见 here :

“...如果您以前使用过 JPA,就会知道每个 JPA 实体都必须提供一个 @Id 属性。这里的 Model 父类(super class)提供了一个自动生成的数字 ID,在大多数情况下这已经足够了。……”

关于java - id 列和 JPA 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6015420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com