我想在不加载整个对象的情况下获取一对一关系的id.我以为我可以使用延迟加载执行此操作,如下所示:
class Foo {
@OneToOne(fetch = FetchType.LAZY, optional = false)
private Bar bar;
}
Foo f = session.get(Foo.class, fooId); // Hibernate fetches Foo
f.getBar(); // Hibernate fetches full Bar object
f.getBar().getId(); // No further fetch, returns id
Run Code Online (Sandbox Code Playgroud)
我希望f.getBar()不会触发另一个提取.我希望hibernate给我一个代理对象,允许我调用.getId()而不实际获取Bar对象.
我究竟做错了什么?
遇到相关文件扩展名时,是否有关于延迟加载模式的最佳做法?
此时我安装了大约25种不同的Emacs模式,启动变慢.例如,尽管准备好clojure模式很棒,但我很少使用它,除非我打开扩展名为.clj的文件,否则我想避免加载它.这种"懒惰的需求"功能似乎是正确的模式配置方式.
我在网上找不到任何东西,所以我自己也搞砸了.
代替:
(require 'clojure-mode)
(require 'tpl-mode)
Run Code Online (Sandbox Code Playgroud)
我有这个:
(defun lazy-require (ext mode)
(add-hook
'find-file-hook
`(lambda ()
(when (and (stringp buffer-file-name)
(string-match (concat "\\." ,ext "\\'") buffer-file-name))
(require (quote ,mode))
(,mode)))))
(lazy-require "soy" 'soy-mode)
(lazy-require "tpl" 'tpl-mode)
Run Code Online (Sandbox Code Playgroud)
这似乎工作(我是一个elisp新手,所以欢迎评论!),但我对在网上找不到关于这个主题的书面感到不安.这是一种合理的方法吗?
我通过在地图中存储(可能是分离的)对象来维护hibernate会话中的对象缓存.当缓存命中时,我测试对象是否已经是会话的一部分Session.contains(object).如果没有,我重新附上它Session.lock(object, LockMode.NONE).
问题是,如果先前在会话中加载了相同的对象,则会抛出org.hibernate.NonUniqueObjectException.给定一个分离的实例,我认为没有办法提前找出是否会抛出此异常,而不会触及数据库.
有几种解决方法:
这些都不像预先检查对象类+ id的会话一样干净.
有没有办法做到这一点?
我想用手动事务管理来运行Django-Celery任务,但似乎注释没有堆栈.
例如
def ping():
print 'ping'
pong.delay('arg')
@task(ignore_result=True)
@transaction.commit_manually()
def pong(arg):
print 'pong: %s' % arg
transaction.rollback()
Run Code Online (Sandbox Code Playgroud)
结果是
TypeError: pong() got an unexpected keyword argument 'task_name'
Run Code Online (Sandbox Code Playgroud)
而反向注释顺序导致
---> 22 pong.delay('arg')
AttributeError: 'function' object has no attribute 'delay'
Run Code Online (Sandbox Code Playgroud)
这很有道理,但我找不到一个好的解决方法.Django文档没有提到注释的替代品,我不想在不需要的时候为每个芹菜任务创建一个类.
有任何想法吗?
使用youtube javascript api(http://code.google.com/apis/youtube/js_api_reference.html),我试图允许用户将视频嵌入他在我的应用中创建的某些内容中.我已经完成了所有工作,除了能够检测和处理视频不允许嵌入的情况.
目前,播放器加载并显示不允许视频的缩略图,并且只有在用户尝试播放时才会出错.这很糟糕,因为用户可能在保存/发送其内容之前不播放视频.我想先发制人地检测到不允许嵌入视频,并向用户显示有用的消息.
我能看到的唯一解决方案是实际播放它(以编程方式)并处理此时引发的错误.
现有解决方法:
有没有更好的办法?
谢谢!
-抢