我有@manytoone链接的实体。当我在它上请求类似findByCity时,spring数据会“左外连接”。但是如果我在hibernate上使用条件EQ-它会得到像“select....where city_id=...”这样的普通请求。如何避免在没有@query的情况下加入?
默认情况下,使用@manytoone
关系的select总是使用每个定义的join。在Hibernate5标准中,您需要显式地为每个联接创建别名:
,所以不需要编写(Person->Adress):
session.createCriteria(Person.class).
.add(Restrictions.eq("adress.serial", "42"));
我们需要写信
session.createCriteria(Person.class).
.createAlias("adress", "adr");
.add(Restrictions.eq("adr.serial", "42"));
而且createAlias似乎不是完美的方法名,因为is所做的是:
session.createCriteria(Person.class).
.add(Restrictions.eq("adressId", "42"));
@Entity
@Access(AccessType.FIELD)
public class Person{
@Id
String id;
@JoinColumn(name = "adress_id")
@ManyToOne(fetch = FetchType.LAZY)
@Nullable
public Adress adress;
@Column(name = "adress_id", insertable = false, updatable = false)
private String adressId;
}
@Entity
@Access(FIELD)
public class Adress{
@Id
String id;
}
似乎自从我们将tomcat升级到Version8+后,我们在启动时就会重新加载上下文。然而,这似乎只发生在我们的开发环境中(带有eclipse和Tomcat8.5的windows OS)。我们的生产环境(带有Tomcat8.5的linux OS)不存在此问题。我把它贴在下面,但我没有看到任何迹象表明为什么会发生这样的tomcat日志。我知道这是正常的行为,在web应用程序目录中的一些东西被改变,但
问题内容: 我在网上研究过immutablejs的好处,但是没有发现任何令人满意的东西! 我的问题是,当我可以冻结一个普通的旧javascript对象时,为什么我应该使用该库并使用非本机数据结构? 问题答案: 我认为您不了解immutablejs提供的功能。这不是一个使您的对象变得不可变的库,而是一个使用不可变值的库。 在不简单重复他们的文档和任务说明的情况下,我将说明它提供的两件事: 类型。他们
问题内容: 我玩了一段时间我的代码,这不是关于错误或任何东西,但我只是不明白为什么main()类不需要初始化就可以运行… 但是,是的,非常感谢您的阅读。 问题答案: 与许多其他语言不同,类主体是Python中的可执行语句,并在解释器到达该行后立即执行。当您运行此“程序”时: 它只是打印“嘿”而没有创建任何对象。 这同样适用于函数定义语句(但不适用于函数体)。运行此命令时: 它显示“ hi”,但不显
问题内容: 当引用类变量时,为什么人们要在它前面加上?我不是在谈论什么时候用于区分方法参数,而是在看起来没有必要的时候。 例: 在其中,为什么不仅仅引用为? 什么买什么? 这是一个其代码已在前面的stackoverflow问题。 问题答案: 某些人喜欢在私有数据成员之前添加“ m_”或名称接口“ IFoo”的原因相同。他们认为它提高了可读性和清晰度。您是否同意这样的约定是一个品味问题。
问题内容: 为什么要在上使用pip?难道不是PyPI和程序包作者最主要的原因吗?如果作者将废话源tarball(例如:丢失的文件,没有)上传到PyPI,则pip和都会失败。除了外观上的差异外,为什么Python的人(如上述推文中)似乎强烈青睐pip而不是? (假设我们正在谈论由社区维护的Distribute软件包中的) 问题答案: 这里的许多答案在2015年已经过时了(尽管丹尼尔·罗斯曼最初接受的
问题内容: 我的用例需要一个数据结构。我应该能够将项目推送到数据结构中,而我只想从堆栈中检索最后一个项目。该堆栈的JavaDoc说: Deque接口及其实现提供了一组更完整和一致的LIFO堆栈操作,应优先使用此类。例如: 我绝对不希望这里出现同步行为,因为我将使用方法本地的数据结构。除了这个,我为什么还要在这里呢? PS:Deque的Javadoc说: 双端队列也可以用作LIFO(后进先出)堆栈。