Play 2 フレームワークで Ebean を使用しています。どちらも私にとってはまったく新しいものです。と の 2 つのモデルがAlgorithm
ありSolution
ます。(Algorithm
は複数Solution
の を所有できます。)
@Entity
public class Algorithm extends Model{
@Id
public Long id;
@Required
public String name;
public String description;
@OneToMany(mappedBy="algorithm", cascade=CascadeType.ALL)
public List<Solution> solutions;
...
}
と
@Entity
public class Solution extends Model {
@Id
public Long id;
@Required
public String explanation;
public String code;
@ManyToOne (cascade=CascadeType.ALL)
public Algorithm algorithm;
// **** I added it because the error message said algorithm_id is missing!!
public Long algorithm_id;
...
}
私はsqlite3を使用しており、2つのテーブルのアルゴリズムとソリューションのスキーマは次のとおりです。
CREATE TABLE algorithm(id INTEGER primary key, name varchar(255), description varchar(255));
と
CREATE TABLE "solution"(id INTEGER primary key, explanation varchar(255), code varchar(255), algorithm_id INTEGER);
したがって、私のSolution
モデルでは、もともと行がありませんでしたpublic Long algorithm_id;
。問題は、新しいインスタンスを作成しようとしたときに、play フレームワークが tableAlgorithm
の列が見つからないと不平を言ったことです。そのため、モデル定義と db テーブルの両方に手動で algorithm_id を追加して、エラー メッセージが表示されないようにしました。ただし、ebean のカスケード保存が期待どおりに機能していないようです。algorithm_id 列は、ebean によって自動的に埋められることはありません。いつも空いています。つまり、ソリューションエンティティとアルゴリズムエンティティはデータベースで接続されていません。algorithm_id
solution
だから私の質問は:
モデルとデータベースに手動で algorithm_id を追加する必要がありますか? そうでない場合、algorithm_id を自動的に生成するにはどうすればよいですか?
私の場合、モデルとデータベース テーブル スキーマはどのように見えるべきですか?
ありがとう。