use*_*812 2 java oracle orm hibernate hibernate-mapping
我正在使用hibernate执行CRUD操作的项目.我有用户模型,我试图插入信息,但不断收到此错误
Hibernate: insert into APPUSER (dob, email, firstName, lastName, password) values (?, ?, ?, ?, ?)
Jun 21, 2016 2:17:07 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1400, SQLState: 23000
Jun 21, 2016 2:17:07 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-01400: cannot insert NULL into ("MYAPP8785"."APPUSER"."ID")
Run Code Online (Sandbox Code Playgroud)
用户模型看起来像
@Entity
@Table(name="APPUSER")
public class AppUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Email
@Size(max = 50)
private String email;
@Column
private String dob;
@Column
private String firstName;
@Column
private String lastName;
@Column(name = "password", nullable = false)
private String password;
}
Run Code Online (Sandbox Code Playgroud)
像Hibernate这样的属性
properties.put("hibernate.dialect","org.hibernate.dialect.MySQLDialect");
//properties.put("hibernate.current_session_context_class","thread");
properties.put("hibernate.hbm2ddl.auto","update");
properties.put("hibernate.show_sql","true");
Run Code Online (Sandbox Code Playgroud)
我的印象是hibernate会为我自动生成id并使用sequence插入它们
一些错误:
org.hibernate.dialect.Oracle10gDialect没有11g的特定方言).Integer,不是int)IDENTITY从版本12c开始,oracle仅支持ID生成
您应该使用其他策略,例如使用序列.
映射看起来像:
@Id
@SequenceGenerator(name = "generator", sequenceName = "ID_SEQUENCE", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
@Column(name = "ID")
private Integer id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3572 次 |
| 最近记录: |