2015-01-09 4 views
0

я использовать пружину сохранитьпружинных JPA сохранения данных вручную назначить идентификатор

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-Свойство данного объекта. Если Id-Property имеет значение NULL, то объект будет приниматься как новый, иначе как не новый.

sql как Hibernate: insert into us_highway (blockTime, blockType, endNum, predictTime, publishTime, roadName, situation, startNum, tips) values (?, ?, ?, ?, ?, ?, ?, ?, ?) нет идентификатор - это вставка!

потому что я хочу назначить идентификатор вручную, id-свойство не равно null, если новый, как настроить для сохранения?

+0

Если вы сами присваиваете идентификатор, не используйте '@ GeneratedValue', поскольку это в основном позволяет базе данных управлять идентификатором. –

ответ

2

Если вы назначаете идентификатор вручную. Удалите нижнюю аннотацию по идентификатору.

@GeneratedValue(strategy = GenerationType.IDENTITY) 
+0

большое спасибо –

Смежные вопросы