-2

私はすでに自分のモデルでいくつかの削除を行っていますが、1つは間違った列名を使用しています

GroupeCours gc = GroupeCours.find
            .where()
            .eq("id",id)
            .findUnique();
GroupeCours gc2 = new GroupeCours();
gc2.id=10L;     
gc2.nom="testbidon";

EbeanServer server = Ebean.getServer("refens");
server.insert(gc2);
server.update(gc); //is ok 
server.delete(gc); //fail

GCクラス

@SuppressWarnings("serial")
@Entity
@Table(name="GroupeCours", uniqueConstraints = {
    @UniqueConstraint(columnNames = { "nom", "anneeVersion", "idComposante" }),
    @UniqueConstraint(columnNames = { "id", "anneeVersion", "idComposante" }) })
public class GroupeCours extends AbstractModel {
/**
 * Clé primaire
 */
@Id
@Column(name="id")
public Long id; 

エラー詳細は

play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[PersistenceException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'GroupeCours_id' in 'where clause']]

キー GroupeCours_id を探しているのはなぜですか?
注: 挿入と更新は正常に実行されます

4

1 に答える 1

0

私はエラーを見つけました。メッセージは本当にヘプフルではなく、悪い方向に目を向けさせます。実際、多対多の関係があり、そこからエラーが発生します。ここにタグ @JoinTable を付けた正しいエラーが表示されます。 play.1.0 と hybernate から、命名規則は hybernate と ebean の間で大きく変わります。また、各テーブルとフィールドにタグ付けする必要があります ... https://groups.google.com/forum/?hl=ですべての詳細を見ることができますfr&fromgroups=#!topic/ebean/b4DRSxY68uM

@ManyToMany(cascade = CascadeType.ALL,mappedBy="groupes")       
@JoinTable (
           name="VolumeHoraireAEncadrer_GroupeCours",
           joinColumns = {@JoinColumn(name = "groupes_id", referencedColumnName = "id")},
           inverseJoinColumns = {@JoinColumn(name = "VolumeHoraireAEncadrer_id", referencedColumnName = "id")}

       )
public Set<VolumeHoraireAEncadrer> vhae = new HashSet<VolumeHoraireAEncadrer>();
于 2012-09-20T07:40:20.923 に答える