【问题标题】:No join columns没有连接列
【发布时间】:2012-11-11 18:46:07
【问题描述】:

我是 Ebeans / Play 2.0.4 的新手,我正在尝试对以下内容进行建模:

One question has many answers

所以我的课程看起来像这样:

问题模型:

package models;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.OneToMany;

import play.db.ebean.Model;

@Entity
public class Question extends Model {
    @OneToMany(cascade=CascadeType.ALL)
    public List<Answer> answers = new ArrayList<Answer>();
}

答案模型:

package models;

import javax.persistence.Entity;
import javax.persistence.Id;

import play.db.ebean.Model;

@Entity
public class Answer extends Model {
    @Id
    public Integer id;
} 

但是这给了我以下错误:

java.lang.RuntimeException: No join columns

我做错了什么?在生成的 DDL 中,我需要“更新级联” - CascadeType.ALL 是正确的类型吗?谢谢:-)

【问题讨论】:

  • answers设置为public:public List&lt;Answer&gt; answers;
  • 谢谢,我这样做了,但我仍然遇到同样的错误):
  • 尝试在您的问题实体中添加一个 ID。
  • Nota bene 是您模型的全部代码吗? (如果是 - 它遗漏了某些部分) - 编辑您的问题并显示为所有内容。
  • 添加了完整的模型代码(只是答案中的一个 id,因为即使这种简约的情况也不起作用\:)

标签: playframework persistence ebean


【解决方案1】:

将Id添加到问题实体中:

@Entity
public class Question extends Model {
    @Id
    Integer id;

    @OneToMany(cascade=CascadeType.ALL)
    public List<Answer> answers = new ArrayList<Answer>();
}

在后台,访问问题属性的 Ebean 会生成如下查询:

select * from question q join answer a where q.id = 123

在您的实体中缺少 q.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    相关资源
    最近更新 更多