这两天在学习EJB3.0,不过碰到了这样一个问题:
    我创建了一个主子关系的实体,StorageOrderStorageOrderItem,StorageOrderItem中的某些属性关联了其他的实体,比如Product.我的每一个实体的主键都是由程序调用产生的32位String(比如放在默认构造函数中调用),而不是采用的@GeneratedValue注释.StorageOrder到StorageOrderItem是单向一对多的关系(StorageOrder实体中有一个Set保存StorageOrderItem集合).
    现在的问题就在于,我在创建一个新的StorageOrder时插入了两个新的StorageOrderItem,在保存的时候产生了
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1异常,产生的SQL语句顺序先是对StorageOrder的insert操作,然后是两个StorageOrderItem的update操作,而这两个StorageOrderItem都是新的应该用insert操作才对,在网上找了关于这个异常的解决方法,但都是对主键为数据库自动产生的时候,却没有关于主键是由自己设置的String的解决方法,不知道大侠们有没有什么好的方法来解决?
    EJB是部署到JBOSS上的,数据库用的MSSQL.