当我在自引用实体上进行查询时的SQLException

时间:2015-04-02 14:38:56

标签: java jpa playframework playframework-2.0 ebean

我有一个按照这种模式建立的实体:

@Entity
@Table(name = "participation_formation")
public class ParticipationFormation extends Model {

    @Id
    public int id;

    @OneToOne
    @JoinColumn(name = "id_formation")
    public Formation formation;

    @OneToOne
    @JoinColumn(name = "id_adp")
    public AssistantDePrevention assistantDePrevention;

    @Column(name = "a_participe")
    public boolean aParticipe;

    @Column(name = "commentaire_participation")
    public String commentaireParticipation;

    @OneToOne(cascade = { CascadeType.PERSIST, CascadeType.REFRESH })
    @Column(name = "formation_remplacement")
    public ParticipationFormation formationRemplacement;
}

我尝试进行这样的查询:

public static List<ParticipationFormation> search(JsonNode node) {
    ExpressionList<ParticipationFormation> query = ParticipationFormation.find.where();
    if (node.has("aParticipe"))
        query.eq("aParticipe", node.get("aParticipe").asBoolean());
    if (node.has("formation"))
        query.eq("formation", Formation.extract(node.get("formation")));
    if (node.has("assistantDePrevention"))
        query.eq("assistantDePrevention", AssistantDePrevention.extract(node.get("assistantDePrevention")));
    return query.findList();
}

extract()方法有一个特殊的逻辑,用于从Json节点检索或创建bean。

在我的情况下,节点只有一个&#34; assistantDePrevention&#34;字段。

当达到findList()时,我有这个例外(我缩短了输出):

PersistenceException: Query threw new SQLException: Unknown column 't0.formation_remplacement_id' in 'field list'

当我删除级联信息时,它可以正常工作。

有人能解决我的问题或解释吗?

1 个答案:

答案 0 :(得分:1)

@Column映射中将@JoinColumn更改为formationRemplacement