【发布时间】:2018-07-16 07:12:32
【问题描述】:
我有 spring boot rest api,我已经成功保存了 1 个表,但是当我尝试保存具有 2 个其他关系的对象时,我得到了错误:
o.h.engine.jdbc.spi.SqlExceptionHelper:SQL 错误:1364,SQLState: HY000 o.h.engine.jdbc.spi.SqlExceptionHelper:字段“id”没有默认值
这是我的实体和实体管理器持久性:
@Entity
@Table(name="booking")
public class Booking {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
@Column(name="description")
private String description;
@OneToMany(mappedBy="booking",cascade = CascadeType.ALL)
private List<CategoriesBooking> bookingInfos = new ArrayList<>();
@Entity
@Table(name="category_booking")
public class CategoriesBooking {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
@Column(name = "name")
private String name;
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name="booking_id")
private Booking booking;
@OneToMany(mappedBy="categoriesBooking",cascade = CascadeType.ALL)
private List<OptionsBooking> options = new ArrayList<>();
@Entity
@Table(name="options_booking")
public class OptionsBooking {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name = "catebooking_id")
private CategoriesBooking categoriesBooking;
@Transactional
@Repository
public class Services{
@PersistenceContext
protected EntityManager entityManager;
public Services() {
}
public boolean add(Booking booking){
try {
entityManager.persist(booking);
return true;
} catch (Exception e) {
entityManager.getTransaction().rollback();
}
return false;
}
}
数据:
{description: 'test for persist',
bookingInfos:[{
name:'test1',
options:[{
name: 'test1-test1'
}]
}]
}
我更新使用 MySQL
【问题讨论】:
-
您使用的是什么关系型数据库? ID 列是如何定义的?
-
请不要更改问题,使其成为不同的问题,尤其是当它有答案时。这会使答案变得荒谬。我回滚了你的更改。请改为创建一个新问题,如果其中一个答案有助于解决此问题,请支持它,如果它解决了问题,请接受它为正确的,这样其他人就有更好的机会找到问题的有用和正确答案。
-
你能不能尝试改变“private int id;”到“私有整数 id;”
标签: spring-boot spring-data-jpa