小编a_h*_*ame的帖子

“限制”附近的 jpa 语法不正确

任何人都可以让我知道,如何使用 spring 数据 JPA 检索特定列的最大值。

我一直在尝试使用 spring 数据 JPA 参考文档中给出的 findTopByOrderByIdDesc 方法,但我得到“'limit'异常附近的语法不正确。

来自 spring 数据 JPA 的方法签名是

用户 findTopByOrderByAgeDesc();

并且我正在尝试使用相同的方法签名,这里该方法不希望传递任何参数,但根据可以的异常,我传递了限制。

甚至我尝试将方法名称更改为 User findTop1ByOrderByIdDesc();

但这确实有效。我不想使用 @Query("some query")

public User getmaxSequence() {
        User user=new User();

        try {
            user=   userRepository.findTopByOrderByIdDesc();

        }catch(Exception e) {
            e.printStackTrace();
        }

        return user;
    }
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我低于异常堆栈跟踪。

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'limit'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:578)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:508)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:434)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)
    ... 150 more
Run Code Online (Sandbox Code Playgroud)

sql-server hibernate spring-data-jpa

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

如何在postgresql函数中连接两个字符串?

我想要一个返回连接字符串的函数。在 postgresql 中执行此函数后出现以下错误。

CREATE OR REPLACE FUNCTION getTableName () 
RETURNS text AS $$ 
DECLARE 
    state_short_name text; 
BEGIN 
   state_short_name := (select lower(state_short_name) from mst_state where state_code in (SELECT substr(entity_code,1,2) FROM shg_detail_share WHERE entity_code = '3420006002001'))   
   RETURN (CONCAT(state_short_name, '_shg_detail'));
END;
$$  LANGUAGE plpgsql 
Run Code Online (Sandbox Code Playgroud)

我希望输出像'jh_shg_detail',但我收到这样的错误

ERROR:  syntax error at or near "("
LINE 9:    RETURN (CONCAT(state_short_name, '_shg_detail')); 
Run Code Online (Sandbox Code Playgroud)

postgresql concat plpgsql

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

sql比oracle中的plsql快吗

使用批量收集或常规合并更新?

我试图通过使用批量收集和正常合并来检查更新的性能。我看到当我们在匿名块中使用简单合并时,性能会更好。使用批量收集时,需要花费更多时间。

如果正常更新(合并)比批量收集快,那么为什么Oracle引入了它?我们在哪里真正看到批量收集的好处?

declare 
l_start integer;
l_end integer;
begin
l_start := dbms_utility.get_time;
merge into test111 t1
using test112 t2
on (t1.col1 = t2.col3)
when matched then update 
set t1.col2 = t1.col2*5;
l_end := dbms_utility.get_time;
dbms_output.put_line(l_end - l_start);
end;
Run Code Online (Sandbox Code Playgroud)
declare
type nt_test is table of test112.col3%TYPE;
nt_val nt_test := nt_test();
cursor c is select col3 from test112;
c_limit integer := 100;
l_start integer;
l_end integer;
begin
l_start := DBMS_UTILITY.get_time;
open c;
loop

fetch c 
bulk collect into nt_val limit c_limit;
exit …
Run Code Online (Sandbox Code Playgroud)

sql plsql bulkinsert oracle11g query-performance

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

在Oracle中有与TRY_CONVERT()等效的东西吗?

如果转换成功,则T-SQL中的TRY_CONVERT()将返回一个转换为指定数据类型的值;否则它将返回NULL。

ORACLE中是否有类似的功能或重现此行为的方法?

sql oracle plsql

0
推荐指数
2
解决办法
61
查看次数

SQL 创建多个与单个“状态表”

在审查了许多数据库设计之后,我仍然不确定什么是最好的方法。我正在设计一个数据库,其中大多数实体具有不同的状态。例如我可能有类似的东西

  • 用户状态:活动、非活动、禁用等。
  • 订单状态:打开、关闭、取消;
  • 办公室状态:打开、关闭。

我在思考两种不同的选择。

1)为每个实体创建一个“状态”表

    CREATE TABLE UserStatus(
       UserStatusID int,
       Description varchar(255)
    );
    CREATE TABLE OrderStatus(
       OrderStatusID int,
       Description varchar(255)
    );
Run Code Online (Sandbox Code Playgroud)

2)为所有实体创建一个共享状态表

    CREATE TABLE Status(
       StatusID int,
       Description varchar(255)
    );
Run Code Online (Sandbox Code Playgroud)

如果您能解释哪个选项更好或每个选项的优点,我将不胜感激

sql database-design

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

ROW_NUMBER() 是否支持 OVER(ORDER BY 1)?

下面 2 个语句给出 2 个不同的结果

SELECT t.EID,t.name, ROW_NUMBER() OVER(ORDER BY 1) AS ROW_NUM
  FROM ESWAR t
;
Run Code Online (Sandbox Code Playgroud)
SELECT t.EID,t.name, ROW_NUMBER() OVER(ORDER BY 1) AS ROW_NUM
  FROM ESWAR t
;
Run Code Online (Sandbox Code Playgroud)
EID  NAME   ROW_NUM
2    Ram       1
1    Siva      2
3    Deva      3
Run Code Online (Sandbox Code Playgroud)
SELECT t.EID, t.name,ROW_NUMBER() OVER(ORDER BY t.EID) AS ROW_NUM
  FROM ESWAR t
;
Run Code Online (Sandbox Code Playgroud)

sql oracle row-number

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

未为旧记录设置默认值的新列

我创建了一个新列 S_TEST 并将其默认值设置为 2 并保存表,但不幸的是旧记录没有自动设置,而是它们具有 NULL 值。看我的截图。

设置默认值

试图查询

sql sql-server ddl

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

为什么 SQL Server 不让我将“21/04/17”存储为日期?

我有一个表,目前所有列都存储为 nvarchar(max),所以我将所有数据类型转换为它们应该是的。我有一列日期,但是当我运行它时:

ALTER TABLE Leavers ALTER COLUMN [Actual_Termination_Date] date;
Run Code Online (Sandbox Code Playgroud)

我得到

"Conversion failed when converting date and/or time from character string".
Run Code Online (Sandbox Code Playgroud)

这是比较正常的,所以我做了以下调查:

SELECT DISTINCT TOP 20 [Actual_Termination_Date]
FROM LEAVERS
WHERE ISDATE([Actual_Termination_Date]) = 0
Run Code Online (Sandbox Code Playgroud)

返回:

NULL
13/04/2017
14/04/2017
17/04/2017
19/04/2017
21/04/2017
23/04/2017
24/04/2017
26/04/2017
28/04/2017
29/03/2017
29/04/2017
30/04/2017
31/03/2017
42795
42797
42813
42817
42820
42825
Run Code Online (Sandbox Code Playgroud)

null 和 excel 样式的日期格式(例如 42795)没有问题,但是我遇到了问题,这些日期显示为完全正常的日期。我通常使用以下修复方法之一来解决此类问题:

SELECT  cast([Actual_Termination_Date] - 2 as datetime)
FROM LEAVERS
WHERE ISDATE([Actual_Termination_Date]) = 0
Run Code Online (Sandbox Code Playgroud)

或者

SELECT  cast(convert(nvarchar,[Actual_Termination_Date], 103) - 2 as datetime)
FROM LEAVERS …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sqldatatypes

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

java 是否为 / 定义了一个变量常量,就像它为 \ (File.separator) 定义的一样?

我想/在我的 Java 程序中使用。

但我正在寻找一个变量常量——比如File.separator(它给出\)。

java

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

SQL 防止从表中选择

有没有办法防止从表中选择,比如在 9 到 5 之间允许选择,否则不返回任何内容?

触发器用于 DML、DDL、数据库操作。

用程序来做,并检查时间/其他条件是否正确?

或者有没有更简单的方法来防止选择?

sql oracle database-trigger

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