我的应用程序模型集中有一个User实体,其定义如下:
public class User extends Model {
private String name;
private byte[] sk;
@Column(columnDefinition = "BINARY(272)")
private byte[] pk;
private int port;
@OneToOne
public Profile profile;
@ElementCollection
public List<String> friends;
@ElementCollection
public List<String> mirrors;
...
}
并且在我应用程序不同部分(控制器类)中的方法中,我正在检索并尝试按以下方式修改镜像列表:
User u = User.connect(username);
int port = ProfileFinder.getLocation(username, mirror);
u.mirrors.remove(mirror);
u.save();
这引发了一个错误,指出:
LazyInitializationException occured : failed to lazily initialize a collection of role: models.User.mirrors, no session or session was closed
我怀疑这是由于我误解了@ElementCollection
标签的某些元素,但是没有人能阐明我该如何纠正它?
谢谢。
默认情况下,XxxToMany
关联和元素集合是延迟加载的。
这意味着仅当需要调用一种收集方法时,才从数据库中加载收集元素。但是,当然,实体需要附加到其会话上才能起作用。如果会话关闭,则会引发您收到的异常。
您可以通过设置批注的fetch属性使它急切地加载,或者在返回之前使用事务中的初始化集合的查询或服务。请注意,如果您急切地加载它,即使您不需要collection元素,也总是会急切地加载它。
我正在尝试在Play Framework中实现SOAP Web服务客户端。我找到了lib,但找不到存储库: https://github.com/playframework/play-soap http://downloads.typesafe.com/rp/play-soap/SbtWsdl.html 当我添加sbt插件<code>addSbtPlugin(“com.typesafe.play”
EasyWeChat 是一个通用的 Composer 包,所以不需要对框架单独做修改,只要支持 Composer 就能直接使用,当然了,为了更方便的使用,我们收集了以下框架单独提供的拓展包: Laravel overtrue/laravel-wechat Symfony lilocon/WechatBundle Yii jianyan74/yii2-easy-wechat 适用于 EasyWeCh
QueryList无框架依赖,可以灵活的嵌入到任何项目中去。 在使用Composer管理的项目中安装 在非Composer管理的项目中安装 QueryList可以集成到任何框架中去使用,无需做任何修改,直接使用Composer安装到项目中去即可。 在使用Composer管理的项目中安装 如果项目框架本身就是使用Composer来管理包的话,直接在项目根目录执行Composer安装命令后,即可在项目
null
**编程对象,Settings.UseJavaCP.Value=true。 Build.Scala
问题内容: 当我使用https端口运行Play Framework时,应用程序在两个端口上启动- 默认(9000)和https(443)。如何禁用默认的9000端口并仅在https端口上运行Play应用程序? 我通过以下命令运行应用程序: 我得到一些日志: [info]播放-应用程序已启动(产品) [info]播放-侦听/ 0:0:0:0:0:0:0:0:9000上 的HTTP [info]播放-