Java 为什么hibernate不在级联上执行自动增量?
我有这两个类,我尝试使用hibernate和JPA注释执行级联保存更新,但当我尝试保存我的Order对象时,我得到一个异常,如下所述: 这是订单类Java 为什么hibernate不在级联上执行自动增量?,java,hibernate,Java,Hibernate,我有这两个类,我尝试使用hibernate和JPA注释执行级联保存更新,但当我尝试保存我的Order对象时,我得到一个异常,如下所述: 这是订单类 @Entity @Table(name="orders") public class Order { @Id @GeneratedValue(generator = "increment") @GenericGenerator(name = "increment", strategy = "increment") p
@Entity
@Table(name="orders")
public class Order {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private Integer idOc;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL ,mappedBy = "order")
@Valid
private List<OrderLine> lines = new ArrayList<OrderLine>(Arrays.asList(new OrderLine()));
// getters and setters
}
以下是我得到的例外情况:
1-org.hibernate.exception.ConstraintViolationException:无法执行语句
2-原因:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列“idOl”不能为null
hibernate生成器无法分配偶像,但不知何故它无法工作。有什么想法吗
更新:
在控制台上,我可以看到Hibernate正在父表上执行插入操作,但当它尝试在子表上执行插入操作时,会引发异常。
我可以看到Hibernate没有为列表中包含的每个元素分配自动递增值,但我不知道为什么。我依赖于一个真正的DB序列对象。e、 g.在班级级别定义以下内容:
@SequenceGenerator(
name="SEQ_ORDER",sequenceName="SEQ_ORDER", allocationSize=1, initialValue=1)
然后在Id字段的GeneratedValue属性中使用相同的序列。e、 g
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_ORDER")
@Column(name="ID", nullable=false)
protected Integer id;
请参阅将@column定义为不可空,并尝试在订单行表定义中使用空格是否可以@Tablename=orderLines@Wall-E很抱歉,我来自阿根廷,代码是西班牙语。当我翻译它以使它更容易阅读时,我犯了那个错误,但原文没有那个空间。
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_ORDER")
@Column(name="ID", nullable=false)
protected Integer id;