【问题标题】:spring data jpa save manually assign identifierspring data jpa save 手动分配标识符
【发布时间】:2015-01-09 07:45:34
【问题描述】:

我使用弹簧保存

  HighWay highWay = new HighWay();
     highWay.setId("000");
    HighWayRepository hRepository = (HighWayRepository) context
                    .getBean("highWayRepository");
            hRepository.save(highWay);
            hRepository.flush();


    public interface HighWayRepository extends JpaRepository<HighWay, String> {

    }

该表类似于f_id varchar(256) NOT NULL,

public class HighWay {
    @Id
    @Column(name="f_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;}

但抛出异常

原因:java.sql.SQLException:字段 'f_id' 没有默认值 价值在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) 在 com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1169) 在 com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:693) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1404) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1318) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1303) 在 com.alibaba.druid.pool.DruidPooledPreparedStatement.executeUpdate(DruidPooledPreparedStatement.java:253) 在 org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208) ... 51 更多

我检查了文件, Id-Property 检查(默认) 默认情况下,Spring Data JPA 检查给定实体的 Id-Property。如果 Id-Property 为 null,则该实体将被假定为新实体,否则为非新实体。

sql 就像 Hibernate:insert into us_highway (blockTime, blockType, endNum, predictTime, publishTime, roadName, situation, startNum, tips) values (?, ?, ?, ?, ?, ?, ?, ?, ?) 不是 id 是插入!

因为我要手动分配id,如果是新的id-property不为null,如何配置保存?

【问题讨论】:

  • 如果您自己分配标识符,请不要使用@GeneratedValue,因为这基本上可以让数据库控制 ID。

标签: spring spring-data spring-data-jpa


【解决方案1】:

如果您是手动分配 ID。请删除下面的 id 注释。

@GeneratedValue(strategy = GenerationType.IDENTITY)

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 2018-06-18
    • 2021-11-27
    • 2018-08-15
    • 2020-03-26
    • 2014-10-20
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多