我的示例中的完整错误行是“[PersistenceException: org.h2.jdbc.JdbcSQLException: Parameter "#1" is not set; SQL statement: delete from class4 where (class3_id) in (?) [90012-158]]”
这发生在我的单元测试中,所以决定创建一个测试项目来尝试重现它,它确实做到了。
基本上,我有 1-4 类,每个类都与 onetomany 相关,我尝试创建它们,然后按 1、2、3、4 4、3、2、1 的顺序删除它们,但我收到此错误。
除了数字之外,这些类都是相同的(最后一个类没有列表
@Entity
public class Class1 extends Model{
/**
*
*/
private static final long serialVersionUID = 4322329984247299024L;
@Id
@GeneratedValue
public Long id;
@OneToMany(mappedBy="class1",cascade={CascadeType.PERSIST, CascadeType.ALL})
private List<Class2> class2s = new ArrayList<Class2>();
public Class2 add()
{
Class2 class2 = new Class2(this);
Class2.create(class2);
return class2;
}
@play.db.ebean.Transactional
public static void create(Class1 class1) {
class1.save();
}
@play.db.ebean.Transactional
public static void delete(Class1 class1) {
class1.delete();
}
}
我的导致错误的应用程序代码运行如下
Class1 class1 = new Class1();
Class1.create(class1);
Class2 class2 = class1.add();
class1.add();
Class2.delete(class2);
Class1.delete(class1);
我还附上了一个示例应用程序,显示它正在发生,如果有人能指出我做错了什么,或者如果有人知道我如何解决它,如果它是 API 的一个错误,我将非常感激。
http://stowelly.co.uk/play-2.0.3-persistence-test.zip
谢谢你