【问题标题】:play 2.0 how to define a finder with multiple keys玩2.0如何定义一个多键取景器
【发布时间】:2012-09-20 22:57:57
【问题描述】:

假设有一个具有唯一约束的 Model bean,它结合了两列(作为复合主键),如下所示:

@Entity
@Table(uniqueConstraints = {  @UniqueConstraint(columnNames = { "key1", "key2" }) })
public class Rating extends Model {

    @ManyToOne
    @JoinColumn(name="key1", nullable=false)
    public Post key1;

    @ManyToOne
    @JoinColumn(name="key2", nullable=false)
    public User key2;
    ...
}

如何找到具有以下签名的方法的查找器:

public static Rating get(Post key1, User key2) { ... }

【问题讨论】:

  • AFAIK,您没有定义复合键,而只是两个属性之间的唯一约束。要定义复合键,您必须使用 @EmbeddedId@IdClass 注释。
  • PostUser 在此示例中也是模型类。那么,您会建议用Post.keyUser.key 定义@IdClass 吗?
  • 我会尝试使用@EmbeddedId,请参阅这篇文章以获取示例 (weblogs.java.net/blog/bleonard/archive/2006/11/…),但我没有使用 Ebean 进行测试,如果您能提供一些反馈,那就太好了;- )
  • 我会在周末试一试并在这里更新。到目前为止,谢谢。
  • 我已经使用@EmbeddedId 和使用finder.where().eq("key1", key1.getKey()).eq("key2", key2.getKey()).findUnique(); 的自定义查找器解决了这个问题

标签: java playframework playframework-2.0 ebean


【解决方案1】:

AFAIK,您没有定义复合键,而只是定义了两个属性之间的唯一约束。要定义复合键,您必须使用 @EmbeddedId[1] 或 @IdClass[2] 注释。

我会选择@EmbeddedId,您可以在此处查看使用示例:http://weblogs.java.net/blog/bleonard/archive/2006/11/using_composite.html

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2012-09-15
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2011-05-02
    • 2023-03-20
    相关资源
    最近更新 更多