java字段“ID”没有默认值
我将MySQL与Hibernate和JPA2一起使用
我有下表,我希望自动生成ID
,因为选中了AI
(Auto Increment
):
CREATE TABLE `job` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`JOINING_DATE` double NOT NULL,
`LASTACCESS_DATE` double NOT NULL,
`PHONE_NUMBER` varchar(55) DEFAULT NULL,
`MOBILE_NUMBER` varchar(55) DEFAULT NULL,
`EMAIL_ADDRESS` varchar(55) DEFAULT NULL,
`SEX` int(1) DEFAULT NULL,
`JOB_TITLE` varchar(65) NOT NULL,
`JOB_DESCRIPTION` varchar(800) NOT NULL,
`JOB_DETAILS` varchar(800) DEFAULT NULL,
`DRIVERS_LICENCE` int(1) DEFAULT NULL,
`AVATAR` longblob,
`TYPE` int(1) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID_UNIQUE` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=87 DEFAULT CHARSET=utf8;
工作。java
@Entity
@Table(name = "job")
@XmlRootElement(name = "job")
public class Job extends AbstractDomain<Long> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
刀。java
protected T merge(T entity) throws InstantiationException, IllegalAccessException {
T attached = null;
if (entity.getId() != null) {
attached = entityManager.find(entityClass, entity.getId());
}
if (attached == null) {
attached = entityClass.newInstance(); // <= this is executed
}
BeanUtils.copyProperties(entity, attached);
entityManager.merge(attached); // <= ID is null here
return attached;
}
当我尝试merge
表格时,我得到以下错误:
Caused by: java.sql.SQLException: Field 'ID' doesn't have a default value
奇怪的是,这在早期是有效的,Java代码没有改变,我只对其他一些数据库表进行了更改。我读到here一些人有这个问题,并通过删除和导入他们的数据库修复了它。我确实删除了模式并再次导入了它。但仍然会出现同样的错误
有人有什么想法吗
共 (0) 个答案