Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date jpa2类型安全查询的带日期的生成条件_Date_Jpa_Conditional Statements_Type Safety - Fatal编程技术网

Date jpa2类型安全查询的带日期的生成条件

Date jpa2类型安全查询的带日期的生成条件,date,jpa,conditional-statements,type-safety,Date,Jpa,Conditional Statements,Type Safety,我有以下疑问: SELECT DISTINCT * FROM Projekt p WHERE p.bewilligungsdatum = to_date('01-07-2000', 'dd-mm-yyyy') 但我在创造条件方面有问题。这是我的代码: condition = criteriaBuilder.equal((Expression<String>) projekt.get(criterion), "to_date('" + projektSearchField + "'

我有以下疑问:

SELECT DISTINCT * 
FROM Projekt p
WHERE p.bewilligungsdatum = to_date('01-07-2000', 'dd-mm-yyyy')
但我在创造条件方面有问题。这是我的代码:

condition = criteriaBuilder.equal((Expression<String>) projekt.get(criterion), "to_date('" + projektSearchField + "', 'dd-mm-yyyy')");

而乌夫科塞不起作用。我应该使用哪种方法进行日期比较(或者如何删除模式部分中的外部
字符)?

为什么不尝试使用类似的参数。然后,您可以在java中进行字符串->日期转换,并向数据库传递一个real
java.util.Date

EntityManager em; // initialized somewhere
Date datum; // initialized somewhere

...

String queryString = "SELECT p " 
             + "FROM Projekt p"
             + "WHERE p.bewilligungsdatum = :datum";

Query query = em.createQuery(queryString)

query.setParameter("datum", datum);

List<Projekt> projekte = query.getResultList();
EntityManager em;//在某处初始化
日期基准;//在某处初始化
...
String queryString=“选择p”
+“来自项目p”
+“其中,p.beulligungsdatam=:datum”;
Query Query=em.createQuery(queryString)
query.setParameter(“基准”,基准);
List projekte=query.getResultList();
这是保持数据库独立的方法,因为您没有使用特定的“截止日期”功能


不来梅的居所;o)

通过将日期作为限制参数传递,这也应该起作用

Date datum; // initialized somewhere

CriteriaQuery query = ...

query.add(Restrictions.eq( "bewilligungsdatum ", datum );

...

对不起。我想到了hibernate
CriteriaQuery

然后尝试通过
CriteriaBuilder
之类的东西

Date datum; // initialized somewhere

...

final CriteriaQuery<Projekt> query = criteriaBuilder.createQuery(Projekt.class);
final Root<Projekt> projekt = query.from(Projekt.class);

Predicate condition = criteriaBuilder.equals(projekt.get("bewilligungsdatum"),datum);
query.where(condition)
日期基准;//在某处初始化
...
最终的CriteriaQuery查询=criteriaBuilder.createQuery(Projekt.class);
最终根projekt=query.from(projekt.class);
谓词条件=criteriaBuilder.equals(projekt.get(“beulligungsdatam”)、datum);
查询。其中(条件)
我以前没有使用过这个,所以请自己尝试一下,然后使用如下条件


Object value1 = hire_date
Object value2 = new CustomObj("to_date('2018-12-01 00:00:00','yyyy-MM-dd HH:mm:ss')")

//CustomObj 
public class CustomObj extends Expression {
    private Object _value;

    public CustomObj(Object value) {
        _value = value;
    }

    @Override
    public boolean hasParens() {
        return false;
    }

    @Override
    protected void collectSchemaObjects(ValidationContext vContext) {
    }

    @Override
    public void appendTo(AppendableExt app) throws IOException {
        app.append(_value);
    }
}

BinaryCondition.greaterThan(值1、值2,包括在内)


类似于sql的hire\u date>=to\u date('2011-02-28 00:00:00','yyyy-MM-dd HH:MM:ss')

区别在于,我使用CriteriaQuery而不是Query。我没有查询字符串或类似内容;)请参见此处的类似查询:在数据库中,我们有一个时间戳…“Sat Jul 01 00:00:00 CEST 2000”。如果用户键入“01-07-2009”,会发生什么?这只是一个字符串表示形式。确保将GUI中输入的日期转换为真实的
java.util.Date
对象。JPA应该处理剩下的事情。

Object value1 = hire_date
Object value2 = new CustomObj("to_date('2018-12-01 00:00:00','yyyy-MM-dd HH:mm:ss')")

//CustomObj 
public class CustomObj extends Expression {
    private Object _value;

    public CustomObj(Object value) {
        _value = value;
    }

    @Override
    public boolean hasParens() {
        return false;
    }

    @Override
    protected void collectSchemaObjects(ValidationContext vContext) {
    }

    @Override
    public void appendTo(AppendableExt app) throws IOException {
        app.append(_value);
    }
}