小编SAS*_*ROG的帖子

如何使用JPA中的SqlResultSetMapping将本机sql结果映射到oneToMany字段

例如,假设我有以下数据库表

Building
-----------
id
name
Run Code Online (Sandbox Code Playgroud)

Room
-----------
id
roomNo
buildingId
Run Code Online (Sandbox Code Playgroud)

构建Java类看起来像

@Entity
public class Building {       
   private int id;
   @OneToMany private List<Room> rooms;
...
Run Code Online (Sandbox Code Playgroud)

我有以下SQL来获取Building

SELECT   b.id,
         b.name,
         r.id AS rid,
         r.roomNo 
FROM     Building b
  LEFT JOIN Room r ON
         b.id = r.buildingId
Run Code Online (Sandbox Code Playgroud)

结果将是

id, name, rid, roomNo
---------------------
1, 'b1', 10, 'r100'
1, 'b1', 11, 'r101'
2, 'b2', 12, 'r10'
Run Code Online (Sandbox Code Playgroud)

请注意,由于一对多关系,存在重复的建筑物.

我知道我只需使用JPQL即可获得Building实体,但我希望使用本机SQL执行此操作.那么我如何使用JPA的@SqlResultSetMapping将上面的结果映射回到Building类?

java sql jpa

7
推荐指数
1
解决办法
1288
查看次数

Vuetify 数据表将动态槽与行/项目槽相结合

我正在尝试制作一个可重用的 vuetify 数据表。如果我愿意的话,我希望能够传递动态槽或项目槽,并且两者都应该有效。这是代码

<v-data-table
    :headers="headers"
    :items="items"
    :dense="dense"
    :hide-default-header="hideDefaultHeader"
    :loading="loading"
    :options.sync="settings"
    :items-per-page="itemsPerPage"
    :server-items-length="itemLength"
    @click:row="handleClick"
    :height="height"
>
    <-- 1st part-->
    <template v-for="field in slots" v-slot:[field.field]="{ item }">
        <slot :name="field.field" :item="item"></slot>
    </template>
    <-- 2nd part -->
    <template v-slot:item="{item}">
        <slot name="item" v-bind="item"></slot>
    </template>
</v-data-table>
Run Code Online (Sandbox Code Playgroud)

然后创建一个组件,DataTable然后我像这样使用它

<DataTable
    v-if="tabs == n"
    :items="items"
    :loading="loading"
    :headers="headers"
    :options="serverOptions"
    :slots="slots"
    :total="toatl"
    @updateOptions="updateOptions($event, n)"
>
Run Code Online (Sandbox Code Playgroud)

我也有一个像这样的插槽数组

slots: [{ field: "item.CREATOR" }, { field: "item.BODY" }]
Run Code Online (Sandbox Code Playgroud)

我希望能够使用item槽位数组2nd part或使用槽位数组中定义的特定列槽位1st part。现在是动态插槽,除非我注释掉2nd part. 这就是我目前对每个部分进行定位的方式

第 …

datatable vue.js vuetify.js

5
推荐指数
1
解决办法
5658
查看次数

vscode 中具有特定缩进/对齐 C/C++ 的自动格式

所以我正在C使用 vscode 进行一个学校项目。我们彻底评分的最重要的事情之一是整洁的代码格式。假设我已经声明了 3 个这样的变量

int     i;
char    *s;
size_t  t;
Run Code Online (Sandbox Code Playgroud)

它们必须像这样完全对齐。"editor.formatOnSave": true现在在 settings/settings.json` 中启用 vscode会将其更改为

int i;
char *s;
size_t t;
Run Code Online (Sandbox Code Playgroud)

现在 vscode 中有一种方法可以像第一个片段一样以特定方式保持这些变量对齐,或者自动完成对齐吗?

c c++ visual-studio-code

4
推荐指数
1
解决办法
9861
查看次数

子查询很慢

我有一个大约有1000万行的mysql表。对于每一行,我都有一个id列和一个date列。该id列不是唯一的,对于一个id列,有多行具有不同的值date,通常每行3-6个日期id。我想选择与最新的行date为他们id

我的查询:

SELECT   id,
         date
FROM     tab a
WHERE    a.date = (SELECT MAX(date)
                   FROM   tab b
                   WHERE  a.id=b.id)
Run Code Online (Sandbox Code Playgroud)

非常慢,需要几分钟才能完成。感觉这可以更快地完成。这里的最佳做法是什么?

mysql sql

3
推荐指数
1
解决办法
78
查看次数

模板类中的析构函数给出错误

我有一个Array看起来像这样的模板类

template <typename T>

class Array {
   private:
    T *_array;
    int _arrSize;

   public:
    Array<T>() : _arrSize(0) {
        T *a = new T[0];
        this->_array = a;
    };

    Array<T>(unsigned int n) : _arrSize(n) {
        T *a = new T[n];
        this->_array = a;
    };

    Array<T>(Array<T> const &copy) : _array(copy._array), _arrSize(copy._arrSize) {
        *this = copy;
        return;
    };

    template <typename G>
    Array<T> &operator=(Array<G> const &rhs) {
        if (&rhs != this) {
            Array<T> tmp(rhs);
            std::swap(*this, tmp);
        }
        return *this;
    };

    ~Array<T>() {
        delete[] this->_array; …
Run Code Online (Sandbox Code Playgroud)

c++ templates

3
推荐指数
1
解决办法
73
查看次数

创建C时调用对象方法

所以说我有一个对象A,像这样

class A {
  private:
    int x;
  public:
    A(){};
    ~A(){};
    void sayA() {
      std::cout << "A" << std::endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一个指向的向量 A

std::vector<A *> As;
Run Code Online (Sandbox Code Playgroud)

如何在同时访问方法的同时将的new实例推回A向量sayA

像这样

As.push_back(new A()->sayA());
Run Code Online (Sandbox Code Playgroud)

只是在这种情况下要指出的A不是我创建的对象,而是图形库的一部分

c++ instantiation

3
推荐指数
2
解决办法
88
查看次数

C ++ bool数据类型的异常行为

这是一个好奇心问题。我正在使用布尔值来跟踪代码的某些部分。我有布尔值,说是track初始化为false。现在,当我在其他地方使用整数常量将其更改为true时:

track = 1;
Run Code Online (Sandbox Code Playgroud)

这是定义的。我了解这将如何工作1真假存在0。但是现在当我说

track = 500;
Run Code Online (Sandbox Code Playgroud)

这仍然是定义。合理,因为它是等于或大于其0真值的任何其他值。我现在的困惑是什么时候做

track = 2147483648
Run Code Online (Sandbox Code Playgroud)

大于1 INT_MAX的行为仍定义为true。即使当我将其推到更远的位置时2147483649454788。但是当我等于21474836494547845784578它抛出一个错误

error: integer constant is too large for its type [-Werror]
                     _softExit = 21474836494547845784578;
                                 ^~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

现在,这令人困惑。我是C ++的新手,所以我不确定为什么或这意味着什么。我知道我可以用,track = true;但我很好奇。

c++

2
推荐指数
1
解决办法
90
查看次数

我的代码有什么错误吗?我是新手

当我给a和b赋最大值时,代码可以完美地工作,但是当给c或d输入最大值时,代码不起作用。有人可以帮我吗?

我已经访问过网站并进行了研究,但找不到任何东西。

#include<stdio.h>
void main(void) {
 int a, b, c, d;

 scanf("%d %d %d %d", &a, &b, &c, &d);
 printf("the enter no.: is %d %d %d %d\n", a, b, c, d);

 if(a > b) {
    if(a > c) {
        if(a > d) {
            printf("%d is greater",a);
        }
    }
 } else if(b > a) {
    if(b > c) {
        if(b > d) {
            printf("%d is greater", b);
        }
    }
  } else if(c > a) { 
    if(c > b) {
        if(c > …
Run Code Online (Sandbox Code Playgroud)

c

1
推荐指数
1
解决办法
83
查看次数

错误:离线构造函数不能具有模板参数C ++

我在Array.hpp文件中有一些看起来像这样的代码

template <typename T>

class Array {
   private:
    T *_array;
    int _arrSize;

   public:
    Array<T>();
    Array<T>(unsigned int n);
...
};
Run Code Online (Sandbox Code Playgroud)

然后在Array.cpp文件上我就这样

#include "Array.hpp"

template <typename T>
Array<T>::Array<T>(){};

template <typename T>
Array<T>::Array<T>(unsigned int n) : _arrSize(n) {
    T *a = new T[n];
    for (unsigned int i = 0; i < n; i++) {
        a[i] = 0;
    }
    this->_array = a;
};
...
Run Code Online (Sandbox Code Playgroud)

然后一个主像

int main() {
    Array<int> g(2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试用它编译时,出现clang++ -Wall -Wextra -Werror -std=c++98 *.c …

c++ templates

1
推荐指数
2
解决办法
72
查看次数

使用 gdb 检查指针时返回的第二个十六进制数是多少?

我目前正在尝试从一本名为“剥削的艺术”的书中学习低级编程。这本书在编写了一些代码之后,用 gdb 对其进行了检查。我现在在关于指针的部分。

我现在使用的代码是这样的:

#include <string.h>

int main(){
    char str_a[20]; //20 charachters array
    char *pointer;
    char *pointer2;

    strcpy(str_a, "hello world\n");
    pointer = str_a; //set pointer to the start of the array
    printf("%s\n", pointer);

    pointer2 = pointer + 2; 
    printf(pointer2);
    strcpy(pointer2, "y you guys\n");
    printf("%s\n", pointer);
    ...
Run Code Online (Sandbox Code Playgroud)

在 gdb 中,我中断了行printf("%s\n", pointer);

然后我*pointer使用命令检查指针x/xw pointer,它返回0x7fffffffde20: 0x6c6c6568。我明白这0x7fffffffde20是指针指向的内存,但我不明白是什么0x6c6c6568

然后我用x/xw &pointer直接查看内存*pointer所在的位置,这次返回了0x7fffffffde10: 0xffffde20。我一直不明白第二个十六进制是什么。

如果我尝试使用x/xw 0xffffde20它返回的命令检查它

0xffffde20: Cannot …

c linux assembly gdb pointers

0
推荐指数
1
解决办法
79
查看次数