Tag: sql

使用TIMESTAMPDIFF和JPA条件查询并将hibernate作为提供者

我有一个包含列设置和释放的数据表,两者都有时间戳。 我的目标是使用CriteriaQuery在下面创建一个等效的SQL查询。 SQL查询: SELECT TIMESTAMPDIFF(SECOND, setup, released)) as sum_duration FROM calls CriteriaBuilder#diff()函数显然不起作用,因为它需要参数是Numbers,所以我尝试使用CriteriaBuilder#函数 : EntityManager entityManager = emProvider.get(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery query = criteriaBuilder.createQuery(); Root thingyRoot = query.from(Thingy.class); Path setup = root.get(“setup”); Path release = root.get(“release”); Expression secondLiteral = criteriaBuilder.literal(“SECOND”); Expression func = criteriaBuilder.function(“TIMESTAMPDIFF”, Integer.class, secondLiteral, setup, release); entityManager.createQuery(query).getResultList(); 但是,当我尝试运行此代码时,它抛出exception; 似乎文字不是作为常量呈现,而是作为参数呈现: java.lang.IllegalStateException: No data […]

Java – 从MySQL数据库获取数据

我已经连接到一个MySQL数据库,它包含四个字段(第一个是ID,后者每个都包含varchar字符串)。 我试图获取数据库的最后一行并检索字段的内容,以便我可以将它们设置为变量(一个int和三个字符串)并在以后使用它们。 到目前为止,我有最低限度的连接,我从哪里开始? 正如你所看到的,我已经尝试编写一个SQL语句来获取最后一行但是从那里出现了所有错误,我不知道如何将它拆分为单独的字段。 Class.forName(“com.mysql.jdbc.Driver”).newInstance(); Connection con = DriverManager.getConnection(“jdbc:mysql://localhost/t”, “”, “”); Statement st = con.createStatement(); String sql = (“SELECT * FROM posts ORDER BY id DESC LIMIT 1;”); st.getResultSet().getRow(); con.close();

按日期排序ASC与Spring数据

我尝试在ASC上按顺序在表上创建一个Spring-Data-JPA应用程序,但它给了我一个错误: Invalid derived query! No property asc found for type java.util.Calendar 为什么? List findAllOrderByDateAsc(); 要么 @Query(“SELECT * FROM foo ORDER BY date ASC”) List findAllOrderByDateAsc();

Hibernate – 从多个表到一个对象的复杂查询

我有一个复杂的查询跨越7个表,并想知道如何在Hibernate中实现它。 我目前的尝试是使用session.createSQLQuery进行查询,我会将结果映射到特定实体。 我不知道如何做到这一点,因为过去我只使用一个表到一个实体。 我需要在哪里指定我想使用可能跨越多个表的复杂查询? 这只是在我的代码中吗? 我的hbm.xml文件? 我无法想到除了目前的尝试之外的任何其他事情。 以下是我的查询示例: String stringQuery = “select WI.Customer_Id, CU.Card, CU.Code, “+ “PI.Identity_Card, PI.Name, PI.Surname, PI.Gender, “+ “AD.Zip, AD.Geo_Lat, AD.Geo_Long, “+ “CO.City_Geo_Level, “+ “CU.Address_id, CA.Name, “+ “CU.Category_Id, “+ “CU.Status, “+ “Sum(MO.Charged_Points) as Charged_Points, “+ “Sum(MO.Total_Money) as Total_Money, “+ “Count(MO.id) as AmountTransWinner “+ “from Promotions_Winner WI “+ “join Customers CU “+ “on […]

使用java中的预准备语句插入自定义SQL类型

我有一些自定义类型。 它们基本上都是枚举。 以下是它们的示例: CREATE TYPE card_suit AS ENUM (‘spades’, ‘clubs’, ‘hearts’, ‘diamonds’); 我在Java中有一些准备好的语句,看起来像这样: // Setup stuff up here. sql = “INSERT INTO foo (suit) VALUES (?)”; st.setString(1, ‘spades’); st.executeUpdate(sql); Java给了我一些令人讨厌的例外: org.postgresql.util.PSQLException: ERROR: column “suit” is of type card_suit but expression is of type character varying Hint: You will need to rewrite or cast the expression. […]

hibernate的替代品

对于像http://vimeo.com/28885655这样的程序员来说,什么是最好的解决方案 创建video的人相信 在许多情况下,hibernate是过度的 基本的sql是一种很好的语言,hibernate抽象了很多 我听说过其他一些ORM实现 https://github.com/rufiao/persist http://ormlite.com/ http://www.simpleorm.org/ 我想听听他们如何比较以及每个人的优缺点是什么。

如何使用Java在PostgreSQL中安全地转义SQL的任意字符串

我有一个特殊情况,要求我从用户提供的输入值生成SQL WHERE子句的一部分。 我想防止任何类型的SQL注入漏洞。 我想出了以下代码: private String encodeSafeSqlStrForPostgresSQL(String str) { //Replace all apostrophes with double apostrophes String safeStr = str.replace(“‘”, “””); //Replace all backslashes with double backslashes safeStr = safeStr.replace(“\\”, “\\\\”); //Replace all non-alphanumeric and punctuation characters (per ASCII only) safeStr = safeStr.replaceAll(“[^\\p{Alnum}\\p{Punct}]”, “”); //Use PostgreSQL’s special escape string modifier safeStr = “E'” + safeStr + […]

如何告诉oracle按照从java传入的特定排序顺序进行排序?

这就是我需要做的事情。 我在java中有一个List,我可以将其转换为逗号单独的ID字符串,如此“3,4,5,6,1,2” 我想知道是否有办法将该字符串传递给oracle并根据该字符串的排序顺序进行sql代码排序? 所以这个查询: select t.id from t_test t 会导致这个订单 ID 3 4 5 6 1 2

跨群集共享Java同步块,还是使用全局锁?

我有一些代码,我只想允许一个线程访问。 我知道如何使用synchronized块或方法完成此操作,但这是否适用于集群环境? 目标环境是WebSphere 6.0,在集群中有2个节点。 我觉得synchronized不起作用,因为每个节点上的每个应用程序实例都有自己的JVM,对吧? 我在这里尝试做的是在系统启动时对数据库记录执行一些更新。 它将查找比代码版本更旧的任何数据库记录,并执行特定任务以更新它们。 我只希望一个节点执行这些升级,因为我想确保每个工作项只升级一次,并且这些升级的性能不是一个大问题,因为它只发生在应用程序启动时,它只是真正做任何事情自上次启动以来代码更改的时间。 数据库是DB2v9,我通过JNDI直接访问它(没有ORM层)。 有人建议全球锁定可能是这里的方式,但我不知道如何做到这一点。 有没有人在这个舞台上有任何指针? 谢谢!

运行脚本以使用HSQLDB创建表

我使用hsqldb来运行需要数据库访问的unit testing。 目前,当我想为特定测试创建表时,我有以下代码: private void createTable() { PreparedStatement ps; try { ps = getConnection().prepareStatement(“CREATE TABLE T_DATE (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP)”); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } getConnection()方法检索Spring上下文中定义的DataSource: 现在,我想从SQL脚本创建我的表(当然,这个脚本将包含多个表创建): CREATE TABLE T_DATE_FOO (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP); CREATE TABLE T_DATE_BAR (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP); … 我在HSQLDB文档中看到我可以让他在启动时运行脚本 。 但是,它不符合我的要求,因为我想在运行时运行脚本。 […]