如何解决使用Java Entity不能插入自增列的问题

 

在Java Entity对应的表中,如果有一个自增列,那么我们在用Entity类插入一列数据时,可能碰到下面的错误:

Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'JobsDown' 中的标识列插入显式值。

Error Code: 544

在网上搜索了一下,解决方法是为该列在Entity类中添加GeneratedValue修饰:

@Id

@Basic(optional = false)

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name = "JobsDownID")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要设置Java中的主键自,你需要在数据库表的主键字段上使用长属性,并在Java代码中做一些相应的配置。下面是一个示例: 1. 在数据库中设置自主键 假设你的数据库表为`user`,主键字段名为`id`,你可以使用数据库的自长属性来设置主键自。具体的语法可能会因数据库类型而有所差异,以下是MySQL和Oracle数据库的示例: - MySQL: ```sql CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT ); ``` - Oracle: ```sql CREATE TABLE user ( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY, name VARCHAR2(50), age NUMBER ); ``` 2. 在Java代码中配置主键自Java的实体类或数据访问层中,你需要进行一些配置才能实现主键自。以下是一些示例: - 使用JPA注解(适用于Spring框架): ```java import javax.persistence.*; @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Long id; // 其他属性和方法 } ``` - 使用MyBatis注解(适用于MyBatis框架): ```java public interface UserMapper { @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})") @Options(useGeneratedKeys = true, keyProperty = "id") void insertUser(User user); // 其他方法 } ``` 在上述示例中,使用了JPA注解的`@GeneratedValue(strategy = GenerationType.IDENTITY)`和MyBatis注解的`@Options(useGeneratedKeys = true, keyProperty = "id")`来配置主键自。这将告诉数据库在插入数据时生成自的主键值,并将其赋值给Java对象的`id`属性。 请根据你使用的框架和数据库类型进行相应的配置。希望以上信息对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值