我正在使用Spring Boot开发一个相对较大的项目,总的来说,我对它很满意,但是我遇到了一些问题,这些问题在我看来应该不是问题。
我有两个实体,User
并且UserProfile
,例如。他们之间存在一对一的关系,但是大多数时候我只需要User
数据,但是数据就可以获取(无论我尝试什么,天哪,我都尝试过在Google的5页每篇文章中的世界建议)。
因此,我的第一个问题是,是否有一种方法可以在JPA和Spring中懒洋洋地获取一对一关系?(因为大多数职位超过2-3年)。
JBuilder
甚至to_json
使我能够根据控制器和当前的需求构建json响应。在春季,我看到了以下解决方案:
* `Jackson @JsonView` (这不能完全解决我的问题,因为响应不是静态的,并且不能将属性分配给多个视图(据我了解的概念));
* 设置为我不想在响应中使用的空属性(使用此属性,但是我太丑陋,看起来像一个错误的演练);
* 或`HashMap`像`.json.jbuilder`在Rails上构建一样进行构建(但是这有时会影响我的性能,因为有时它`for`与构建json的关系很多,而且看起来像是一个丑陋的演练)。
我正在寻找某人的某个方向,有一天可能会遇到其中一个问题,因为这使我无法解决这个问题,这使我丧命,这在我看来不应该那么难。
编辑1
已经尝试添加optional = false
的@OneToOne
注释来解决的OneToOne关系的渴望负荷@snovelli建议。例:
@OneToOne(optional=false, fetch = FetchType.LAZY)
public UserProfile getUserProfile(){ ... }
如果连接列不在一对一关联中的父级映射到的表中,则关联不能是lazy。原因是JPA提供程序无法确定是否创建代理,以便它可以在以后访问时加载对象或保留null
值。
即使关联不是可选的,JPA提供程序也必须确定关联实体实例的ID才能将其存储在代理中。因此,无论如何,它都必须转到关联的表。
解决方案:
null
,否则使用list.get(0)
。您当然可以将其封装在实体类中(getter返回列表或的唯一元素null
)。缺点是您必须将其视为JPQL查询中的集合。@PrimaryKeyJoinColumn
代替外键。如果关联不是可选的(optional = false
),则JPA提供程序会知道存在一个具有相同PK的关联子项,因此它将仅将父项的PK作为子项的ID存储在代理中。显然,您不能为两个实体使用两个独立的ID生成器,否则PK可能会有所不同。如果满足您的要求,这是最好的方法。 @OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "<child id in the view>", insertable = false, updatable = false)
private Child child;
我正在使用Spring Boot开发一个相对较大的项目,总的来说我对此相当满意,但我有一些问题,在我看来应该不是问题。 > 首先是一对一的关系。令人沮丧的是,它没有像它应该的那样工作(至少在我的心目中是这样)。 我有两个实体,例如和。他们有一对一的关系,但大多数时候我只需要数据,但它获取(无论我尝试什么,和哦,男孩,我尝试了世界建议在每个帖子上为谷歌的5页)。 所以这是我的第一个问题,有没有一种方
在某些情况下,我的广播接收器是不需要的,所以需要检查接收器是否为空,但有些如何这个对象不为空,即使不使用它和造成崩溃。
我写了以下内容: 解决4clojure.com的问题#118:http://www.4clojure.com/problem/118 当我询问时,不出所料,我会得到一个clojure.lang.lazyseq,但我不知道这与简单地删除lazy-seq“包装”有什么区别。 当然,现在如果删除lazy-seq,我会得到一个stackoverflow,为什么要执行这个: 否则(也就是说:如果我让lazy
问题内容: 我的问题很简单,如何使这段代码变得懒惰: 上面的代码可以计算组合,但是可以在内存中创建整个数组数组。我需要让它返回类似的东西,除了Swift类型系统不允许我做一些通用的事情。 有什么想法如何实现这一目标并保持功能风格吗? 附注:我确实想过用生成器解决这个问题并跟踪索引的另一种方法,但是我不想跟踪任何状态,我想要一个纯函数式(如FP中)的解决方案。Haskell默认情况下会这样做,顺便说
我有一个数据表的问题-懒加载。我认为问题是在IdiomasBean.java(TableBean.java),如果我把: 我得到了正确的数据表,但是<代码>按排序、筛选和不起作用。 我得到:java。lang.NullPointerException这里是堆栈跟踪: 下面是代码的其余部分: 指数xhtml diomasBean.java 懒散的数据模型。JAVA IdiomasBo.java 习语
问题内容: 自1.3.0-beta.10版本以来,AngularJS具有一项新功能:“懒惰的一次性绑定”。 可以在简单表达式的前面加上,告诉angular在首次评估表达式后停止观看。给出的常见示例如下所示: 类似以下表达式的语法是否类似? 问题答案: 是。您可以在每个表达式前添加,甚至可以在或中添加前缀: 实际上,代码只是检查表达式中的前两个字符是为了激活一次性绑定(然后将其删除,因此甚至不需要括