我不明白,当我使用 JPQL 和 JOIN fetch 时,hibernate 应该执行一个查询来连接子实体,但是当我想使用本机查询并使用一个查询连接所有子实体时,hibernate 仍然会延迟加载其他查询中的子实体。我正在使用 Spring Data 2。
我应该如何避免使用本机查询进行延迟加载或n+1查询?
例子:
@Query(value = "SELECT recipe.*, r_ing.*, ing.* FROM recipe recipe join " +
" on recipe.id = r.recipe_id " +
" LEFT JOIN recipe_ingredients r_ing on r.recipe_id = r_ing.recipe_id " +
" LEFT JOIN ingredient ing on r_ing.ingredient_id = ing.id where ing.names in (:ingredientsNames)",
countQuery = "SELECT count(*) FROM recipe recipe join " +
" on recipe.id = r.recipe_id " +
" LEFT …Run Code Online (Sandbox Code Playgroud) 嗨,我尝试从表中的跨度接收值,如下所示:
function getValueFromSibling(this) {
var id = $(this).parent().siblings('span.childSibbling');
}
Run Code Online (Sandbox Code Playgroud)
表看起来像这样:
<tr>
<td>
<button type="button" onClick="getValueFromSibling()"></button>
</td>
<td>
<span class="childSibbling">100</span>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
但我收到这样的东西:
id = r.fn.init [prevObject: r.fn.init(1)]
我发现这是简单的形式:
var jQuery = function( selector, context ){
return new jQuery.fn.init( selector, context );
};
Run Code Online (Sandbox Code Playgroud)
那么问题来了。如何接收InnerHTML从<span>,或如何转换r.fn.init [prevObject: r.fn.init(1)]价值?
var result = id.val();和 var 结果 = 不id.get();工作
我想收到这样的json对象:
"datasets": [{
"label": "# of Votes",
"data": [20, 10, 3],
"backgroundColor": [
"#ccf9d6",
"#ccf9d6",
"#ccf9d6"
],
"borderWidth": 1
}]
Run Code Online (Sandbox Code Playgroud)
但在序列化之前,我必须创建对象,我不知道它应该在后面的代码中查看对象.我有类似的东西,但这是错的.
datasets = new ChartDatasets[4]
{
label = "# of Votes",
data = new int[3] { 20, 10, 3 },
backgroundColor = new string[3] { "#ccf9d6", "#ccf9d6", "#ccf9d6" },
borderWidth = 1
}
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
我已经使用字符串中带有引号的对象序列化了 JSON,如下所示:
var bla = [
{
"label": "person",
"id": "1",
"data": "bla means: \"lala\""
}
];
Run Code Online (Sandbox Code Playgroud)
我知道它在服务器端的样子。但是当我在浏览器中调试它时,我发现收到了错误,因为它如下所示:
var bla = [
{
"label": "person",
"id": "1",
"data": "bla means: "lala""
}
];
Run Code Online (Sandbox Code Playgroud)
和我的错误:
未捕获的语法错误:JSON 中 JSON.parse () 位置 25 处出现意外标记 l
我读到 JSON 应该识别\" https://www.json.org/
有什么想法我应该在哪里纠正吗?当我序列化对象时在服务器端还是使用 JavaScript 在客户端?
编辑:
在服务器端,我使用 C# 库"System.Web.Script.Serialization"
来序列化对象:
List<SomeObject> someObject= new List<SomeObject>();
SomeObject bla1 = new SomeObject();
bla1.id = "1";
bla1.label = "person";
bla1.label = "bla means: \"lala\"";
someObject.Add(bla1);
Run Code Online (Sandbox Code Playgroud)
var bla = …
我有平面对象POJO:
class FamilyInformation {
String house;
String familyMember;
}
Run Code Online (Sandbox Code Playgroud)
使用这样的数据:
[{
house: "houseName1",
familyMember: "Son"
},
{
house: "houseName1",
familyMember: "Mom"
},
{
house: "houseName1",
familyMember: "Dad"
}]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为分层对象POJO:
class House {
String houseName;
List<FamilyMember> familyMembers;
}
class FamilyMember {
String familyMember;
}
Run Code Online (Sandbox Code Playgroud)
我发现的每一条信息都是将其转换为地图.但是我想要List<House>包含List<FamilyMember>任何想法我该怎么办?
我有问题,我想从服务器来到我的属性组件后接收数据.
我在服务中做了这样的事情:
private events: Event[] = [];
eventChanged = new Subject<any>(); // Edit: added an observable
constructor(private http: HttpClient) {
this.http.get<Event[]>(this.baseUrl)
.subscribe(events => this.events = events);
this.eventChanged.next(this.events.slice()); //Edit: added an information to subscribers that events list changed
}
getEvents(): Observable<Event[]> {
return this.eventChanged.asObservable();
} // Edit: now I use this method to enables subscribers to observable
/* I don't use that method after Edit
showAllEvents(): Event[] {
return [...this.events];
}
*/
Run Code Online (Sandbox Code Playgroud)
然后我使用方法showAllEvents()进入我的组件,如下所示:
private events: Event[] = [];
private …Run Code Online (Sandbox Code Playgroud) 我想订阅我从服务器获得的一些对象。但是第一次的代码没有给我任何回报。订阅的代码:
ngOnInit() {
this.dataService.getEvents()
.subscribe(
(events) => {
this.events = events;
console.log(events); // when I try to get this is no problem it prints log to console (probably because event is var so it is not defined)
console.log(events[0].name); // it didn't see that property so I'm getting ERROR TypeError: Cannot read property 'name' of undefined
});
}
Run Code Online (Sandbox Code Playgroud)
服务看起来像这样,我BehaviorSubject用于 Observable:
private eventChanged = new BehaviorSubject<any>([]);
constructor(private http: HttpClient) {
this.refetch();
}
private refetch(): void {
this.http.get<EventE[]>(this.baseUrl)
.subscribe(events => { …Run Code Online (Sandbox Code Playgroud) 我使用amg-snazzy-window 中的 amg-snazzy-window
有解释说我可以覆盖 css 类,但是当我这样做时它不起作用。这是我的例子:
地图组件.html
<agm-snazzy-info-window [closeWhenOthersOpen]="true">
<ng-template>
My snazzy window
</ng-template>
</agm-snazzy-info-window>
Run Code Online (Sandbox Code Playgroud)
我想要更广泛的内容,所以我做了这个:map-component.scss:
.si-content {
width: 500px !important;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
javascript ×4
angular ×3
c# ×2
json ×2
css ×1
hibernate ×1
java ×1
java-8 ×1
java-stream ×1
jquery ×1
rxjs ×1
sass ×1
typescript ×1