长沙刘德华 2016-04-18 14:58 采纳率: 0%
浏览 1641

hibernate主键注解问题

我想所有实体类继承一个BaseVO类,BaseVO类中包含公共信息如id,,问题来了,,主键注解怎么加???我加在BaseVO中,报错:No identifier specified for entity,缺少主键。
BaseVO类:
[code=java]
public class BaseVO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Integer id;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

}
[/code]
User类:
[code=java]
@Entity
@Table(name="user")
public class User extends BaseVO implements Serializable{
/** 用户名 /
@Column(length=50)
private String username;
/
* 用户密码 */
@Column(length=50)
private String password;
......
}
[/code]

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 10:48
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,你需要确保在User类的构造函数或者任何其他可以初始化对象的地方使用@GeneratedValue。这里是一个修改后的版本,它首先定义了主键,并且在构造函数中设置了主键值:

    @Entity
    @Table(name="user")
    public class User extends BaseVO implements Serializable{
        
        // 前面的代码保持不变
        
        /**
         * 重写无参构造器
         */
        public User(){
            super();
            this.setId(new Random().nextInt(100));
        }
        
        // 其他方法和字段...
    
    }
    

    在这个例子中,我们添加了一个无参构造器,然后在构造器中设置super()以引用父类的默认行为(即创建一个新的实例)。这将为User类提供主键并将其赋值给id属性。这样,你就可以避免出现No identifier specified for entity错误。

    评论

报告相同问题?