Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
Java Hibernate 5.2.10 Final和MySQL 5.7中的LocalDate存在问题_Java_Mysql_Hibernate_Jdbc_Localdate - Fatal编程技术网

Java Hibernate 5.2.10 Final和MySQL 5.7中的LocalDate存在问题

Java Hibernate 5.2.10 Final和MySQL 5.7中的LocalDate存在问题,java,mysql,hibernate,jdbc,localdate,Java,Mysql,Hibernate,Jdbc,Localdate,我在项目中使用了Java8、Hibernate 5.2.10Final和MySQL 5.7。但是我在使用java.time.LocalDate时遇到了一些问题。 有两个实体类: TradeDay.class: @Entity @Table(name = "ENTITY__TRADE_DAY") public class TradeDay { @Id @Column(name = "TRADE_DAY_DATE") private LocalDate date;

我在项目中使用了Java8、Hibernate 5.2.10Final和MySQL 5.7。但是我在使用
java.time.LocalDate
时遇到了一些问题。 有两个实体类:

TradeDay.class:

@Entity
@Table(name = "ENTITY__TRADE_DAY")
public class TradeDay {
    @Id
    @Column(name = "TRADE_DAY_DATE")
    private LocalDate date;

    ........

    @OneToMany(targetEntity = Transaction.class, mappedBy = "tradeDay", cascade = CascadeType.ALL)
    @LazyCollection(LazyCollectionOption.EXTRA)
    private Set<Transaction> transactionSet=new LinkedHashSet<>();

    ........
}
然后我遇到的问题是:

1.当我在HQL中使用
LocalDate
作为键时,SQL中的最终值将是上一个日期。例如:

@Override
public List<Transaction> getTransactionList(LocalDate date) {
    Session session = HibernateSessionManager.getCurrentSession();
    Query<Transaction> query = session.createQuery("from Transaction t where t.date=? order by t.index asc", Transaction.class);
    query.setParameter(0,date);
    return query.list();
}
输出如下:

//Just a count SQL because of @LazyCollection(LazyCollectionOption.EXTRA)
Hibernate: select count(TRANSACTION_INDEX) from ENTITY__TRANSACTION where TRADE_DAY_DATE =?

//count SQL got 4 result
1990-12-20 complete with 4 records.

//Iterate set, real SQL
Hibernate: select ...... from ENTITY__TRANSACTION transactio0_ where transactio0_.TRADE_DAY_DATE=?

//No index output???

//SQL by getTransactionList
Hibernate: select ...... from ENTITY__TRANSACTION transactio0_ where transactio0_.TRANSACTION_DATE=? order by transactio0_.TRANSACTION_INDEX asc

//Got 4 result too
1990-12-20 complete with 4 records.

//Success print the index
5535748
5882738
5925376
6165413

如何解决这些问题?感谢您的帮助。

最近,当某人的数据库与另一台服务器上的时区不同时,这引起了很大的噪音。这里有讨论和建议的解决方案,它们告诉您哪些属性要更改为JDBC url和Hibernate配置。您正在使用的MySql驱动程序版本是什么?另外,您是否可以更改您的连接配置,主要是
URL
property?@fujy驱动程序版本是mysql连接器java 6.0.6,
connection.URL
jdbc:mysql://192.168.1.122/quant
@coladict感谢您的帮助。实际上,我的客户端和服务器具有相同的时区(亚洲/上海)。我尝试使用属性hibernate.jdbc.time\u zone,但结果没有任何差别。
......//Before, get a TradeDay entity

Set<Transaction> transactionSet=tradeDay.getTransactionSet();
System.out.println(tradeDay.getDate()+" complete with "+transactionSet.size()+" records.");
for(Transaction transaction:transactionSet){
    System.out.println(transaction.getIndex());
}

//Impl of `getTransactionList` is the code above
List<Transaction> transactionList=DAOManager.getTransactionDAO().getTransactionList(tradeDay.getDate());
System.out.println(tradeDay.getDate()+" complete with "+transactionList.size()+" records.");
for(Transaction transaction:transactionList){
    System.out.println(transaction.getIndex());
}
//Just a count SQL because of @LazyCollection(LazyCollectionOption.EXTRA)
Hibernate: select count(TRANSACTION_INDEX) from ENTITY__TRANSACTION where TRADE_DAY_DATE =?

//count SQL got 4 result
1990-12-20 complete with 4 records.

//Iterate set, real SQL
Hibernate: select ...... from ENTITY__TRANSACTION transactio0_ where transactio0_.TRADE_DAY_DATE=?

//No index output???

//SQL by getTransactionList
Hibernate: select ...... from ENTITY__TRANSACTION transactio0_ where transactio0_.TRANSACTION_DATE=? order by transactio0_.TRANSACTION_INDEX asc

//Got 4 result too
1990-12-20 complete with 4 records.

//Success print the index
5535748
5882738
5925376
6165413