在顶部的回答播放框架2:阅读Build.scala定义的应用程序版本,它的建议,应用程序版本号中规定conf/application.conf
,并在加载Build.scala
通过play.api.Configuration
.我正在使用Play 2.1-RC2
并在构建时收到以下错误消息:
[error] [...]/project/Build.scala:7: object Configuration is not a member of package play.api
[error] val conf = play.api.Configuration.load(new File("."))
Run Code Online (Sandbox Code Playgroud)
我认为这可能是因为Play 2.1构建依赖项必须被指定为SBT的插件,而play.api.Configuration
不是Play的SBT插件的一部分.我猜我必须包含Play的核心库project/plugins.sbt
,但我还没弄清楚如何.有任何想法吗?
(注意:如果我有足够的重复点,本来可以在原始问题中做出评论)
这与这个问题有关,但下面的例子较短,所以我认为另一个问题是有道理的.
我有两个实体,A和B,一对一的关系.对于A,B是可选的,并且每个B必须具有A.我想级联从A到B的删除.这是我的第一次尝试:
@Entity
public class A extends Model {
@Id
private Long id;
@OneToOne(optional = true, mappedBy = "a", cascade = CascadeType.REMOVE, orphanRemoval = true)
private B b;
}
@Entity
public class B extends Model {
@Id
private Long id;
@OneToOne(optional = false)
private A a;
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎Ebean忽略了"可选"注释,因为当我为ID为1的已保存A执行查找时,将执行以下SQL:
select t0.id c0, t1.id c1
from a t0
join b t1 on t1.a_id = t0.id
where t0.id = 1
Run Code Online (Sandbox Code Playgroud)
换句话说,它执行内部而不是左连接,这导致查找失败,当没有关联B.我尝试了各种组合@JoinColumn
,等等无济于事.我发现的唯一令人满意的解决方法是将A-to-B模型化为"假的"一对多关系.有更好的解决方案吗?这是一个错误还是Ebean已知/明确的限制?