【发布时间】: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注释。 -
Post和User在此示例中也是模型类。那么,您会建议用Post.key和User.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