2014-03-14 102 views
2

我使用Ebean的play-framework 2.2.1。我在學生和學校課之間有許多關係。Ebean manyToMany沒有保存在交易

在交易中,創建schoolClass,添加到Student並保存時,相應的橋表未填滿。

@Entity 
public class Student extends Model { 
    ... 

    @ManyToMany(cascade = CascadeType.ALL) 
    public List<SchoolClass> schoolClasses = new ArrayList<SchoolClass>(); 
} 

@Entity 
public class SchoolClass extends Model { 
    ... 

    @ManyToMany(mappedBy = "schoolClasses") 
    public List<Student> students = new ArrayList<Student>(); 
} 

代碼:

try { 
    Ebean.beginTransaction(); 

    ... 
    Student student = new Student(); 
    student.schoolClasses.add(schoolClass); 
    student.save(); 

    Ebean.commitTransaction(); 
} finally { 
    Ebean.endTransaction(); 
} 

任何想法?

+0

如果交易被刪除的代碼按預期工作 – KirdApe

回答

2

我曾經經歷過類似的問題,你可以嘗試這樣的:

List<SchoolClass> classes = new ArrayList<SchoolClass>(); 
classes.add(schoolClass); 
student.schoolClasses.addAll(classes); 
+0

這是我的「解決方案」也。它可能是一個錯誤? – KirdApe

+0

是的,我認爲這是一個錯誤。 –

+0

我有同樣的問題,但這種解決方案並沒有爲我工作。工作的另一種方式是保存關係,相當於:'schoolClass.students.add(student)'。我不知道爲什麼,但它是唯一使它工作的東西。 – mor