Changeset 7522
- Timestamp:
- Nov 6, 2018, 3:50:29 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 11 added
- 10 deleted
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/.classpath
r7509 r7522 28 28 <classpathentry kind="lib" path="lib/dist/javasysmon-0.3.5.jar"/> 29 29 <classpathentry kind="lib" path="lib/dist/slf4j-api-1.7.25.jar"/> 30 <classpathentry kind="lib" path="lib/dist/hibernate-core-5.2.10.Final.jar"/>31 <classpathentry kind="lib" path="lib/dist/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>32 30 <classpathentry kind="lib" path="lib/dist/parallelgzip-1.0.5.jar"/> 33 31 <classpathentry kind="lib" path="lib/dist/yauaa-2.2.jar"/> … … 35 33 <classpathentry kind="lib" path="lib/dist/bcprov-jdk15on-159.jar"/> 36 34 <classpathentry kind="lib" path="lib/dist/postgresql-42.2.5.jar"/> 35 <classpathentry kind="lib" path="lib/dist/hibernate-core-5.3.7.Final.jar" sourcepath="D:/Download/Firefox/hibernate-release-5.3.7.Final/project/hibernate-core/src/main/java"/> 36 <classpathentry kind="lib" path="lib/dist/javax.persistence-api-2.2.jar"/> 37 37 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> 38 38 <classpathentry kind="output" path="xbin"/> -
trunk/doc/3rd-party-components.txt
r7518 r7522 40 40 41 41 More info : http://www.hibernate.org/ 42 Version : 5. 2.1042 Version : 5.3.7 43 43 License : LGPL (hibernate.license.txt) 44 Jar files : hibernate-core-5. 2.10.Final.jar, hibernate-commons-annotations-5.0.1.Final.jar,45 hibernate-jpa-2.1-api-1.0.0.Final.jar,46 antlr-2.7.7.jar, dom4j- 1.6.1.jar, jandex-2.0.3.Final.jar,47 javassist-3.23.1-GA.jar, classmate-1.3.0.jar48 jboss-logging-3.3. 0.Final.jar, jboss-transaction-api_1.2_spec-1.0.1.Final.jar,49 c3p0-0.9.5.2.jar, hibernate-c3p0-5. 2.10.Final.jar, mchange-commons-java-0.2.11.jar,50 ehcache-2.10.3.jar, hibernate-ehcache-5. 2.10.Final.jar,44 Jar files : hibernate-core-5.3.7.Final.jar, hibernate-commons-annotations-5.0.4.Final.jar, 45 javax.persistence-api-2.2.jar, 46 antlr-2.7.7.jar, dom4j-2.1.1.jar, jandex-2.0.5.Final.jar, 47 javassist-3.23.1-GA.jar, byte-buddy-1.18.17.jar, classmate-1.3.4.jar 48 jboss-logging-3.3.2.Final.jar, jboss-transaction-api_1.2_spec-1.1.1.Final.jar, 49 c3p0-0.9.5.2.jar, hibernate-c3p0-5.3.7.Final.jar, mchange-commons-java-0.2.11.jar, 50 ehcache-2.10.3.jar, hibernate-ehcache-5.3.7.Final.jar, 51 51 slf4j-api.1.7.25.jar, slf4j-log4j12-1.7.25.jar 52 52 -
trunk/src/core/net/sf/basedb/core/AnnotationBatcher.java
r7381 r7522 900 900 // We must evict the entity from the Hibernate second-level 901 901 // cache or Hibernate may use the old data 902 secondLevelCache.evictEntity (itemType.getDataClass(), currentItem.getId());902 secondLevelCache.evictEntityData(itemType.getDataClass(), currentItem.getId()); 903 903 } 904 904 } -
trunk/src/core/net/sf/basedb/core/HibernateUtil.java
r7521 r7522 104 104 import org.hibernate.mapping.PersistentClass; 105 105 import org.hibernate.mapping.Table; 106 import org.hibernate.mapping.SimpleValue;107 106 import org.hibernate.mapping.Index; 108 107 import org.hibernate.mapping.Column; … … 1078 1077 hibernateColumn.setNullable(column.isNullable()); 1079 1078 hibernateColumn.setLength(column.getSize()); 1080 1081 // Create Hibernate SimpleValue mapping 1082 SimpleValue hibernateValue = new SimpleValue(metadata); 1083 hibernateValue.setTypeName(column.getTypeWrapper().getHibernateType().getName()); 1084 hibernateValue.addColumn(hibernateColumn); 1079 hibernateColumn.setSqlType(dialect.getTypeName(hibernateColumn.getSqlTypeCode(), hibernateColumn.getLength(), hibernateColumn.getPrecision(), hibernateColumn.getScale())); 1085 1080 1086 1081 // Add column to Table mapping … … 1860 1855 1861 1856 /** 1862 Create a Hibernate query using a stateless session.1863 */1864 @SuppressWarnings({ "unchecked", "rawtypes" })1865 static Query<?> createQuery(StatelessSession session, String hql)1866 throws BaseException1867 {1868 assert session != null : "session == null";1869 assert hql != null : "hql == null";1870 try1871 {1872 Query<?> q = session.createQuery(hql);1873 q.setFetchSize(getJdbcFetchSize());1874 return new EntityQueryWrapper(q);1875 }1876 catch (HibernateException ex)1877 {1878 throw new BaseException(ex);1879 }1880 }1881 1882 /**1883 1857 Create a Hibernate query using a stateless session and a known return type. 1884 1858 @since 3.12 … … 1913 1887 { 1914 1888 NativeQuery<?> q = session.createNativeQuery(sql); 1915 ((Query<?>)q).setFetchSize(getJdbcFetchSize());1889 q.setFetchSize(getJdbcFetchSize()); 1916 1890 return new NativeQueryWrapper<>(q); 1917 1891 } … … 1946 1920 q = session.createNativeQuery(sql); 1947 1921 } 1948 ((Query<R>)q).setFetchSize(getJdbcFetchSize());1922 q.setFetchSize(getJdbcFetchSize()); 1949 1923 return new NativeQueryWrapper<>(q); 1950 1924 } … … 1967 1941 { 1968 1942 NativeQuery<?> q = session.createNativeQuery(sql); 1969 ((Query<?>)q).setFetchSize(getJdbcFetchSize());1943 q.setFetchSize(getJdbcFetchSize()); 1970 1944 return new NativeQueryWrapper<>(q); 1971 1945 } … … 2000 1974 q = session.createNativeQuery(sql); 2001 1975 } 2002 ((Query<R>)q).setFetchSize(getJdbcFetchSize());1976 q.setFetchSize(getJdbcFetchSize()); 2003 1977 return new NativeQueryWrapper<>(q); 2004 1978 } … … 2140 2114 } 2141 2115 2142 2143 /**2144 Get a predefined HQL query using the stateless session.2145 @see PredefinedQuery2146 */2147 static Query<?> getPredefinedQuery(StatelessSession session, String name)2148 throws BaseException2149 {2150 assert session != null : "session == null";2151 assert name != null : "name == null";2152 return createQuery(session, PredefinedQuery.getQueryString(name));2153 }2154 2155 2116 /** 2156 2117 Get a predefined HQL query with a known return type using the stateless session. … … 2330 2291 2331 2292 // Evict the item from the cache and, in another session, try to load the news item 2332 sf.getCache().evictEntity (NewsData.class, newsId);2293 sf.getCache().evictEntityData(NewsData.class, newsId); 2333 2294 session = HibernateUtil.newSession(); 2334 2295 tx = HibernateUtil.newTransaction(session); -
trunk/src/core/net/sf/basedb/core/LogControl.java
r7381 r7522 130 130 131 131 /** 132 Creates a Hibernate HQL query. Use this to get information133 from the database that is relevent for the logging implementation.134 The query uses the stateless session, which means that there135 is no first- or second-level cache and on support for initialization136 of proxies. We recommend that queries are used to return137 scalar values only, not entities.138 @return A Query139 @deprecated In 3.12. use {@link #createHqlQuery(String, Class)} instead140 */141 @Deprecated142 public org.hibernate.query.Query<?> createHqlQuery(String hql)143 {144 return HibernateUtil.createQuery(getSession(), hql);145 }146 147 /**148 132 Creates a Hibernate HQL query with a known return type. Use this to get information 149 133 from the database that is relevent for the logging implementation. -
trunk/src/core/net/sf/basedb/core/hibernate/EntityQueryWrapper.java
r7381 r7522 186 186 public <P> Query<R> setParameterList(QueryParameter<P> param, Collection<P> values) 187 187 { 188 if (param.get Type().isEntityType()) checkEntityCollection(values);188 if (param.getHibernateType().isEntityType()) checkEntityCollection(values); 189 189 return super.setParameterList(param, values); 190 190 } -
trunk/src/core/net/sf/basedb/core/hibernate/NativeQueryWrapper.java
r7478 r7522 22 22 package net.sf.basedb.core.hibernate; 23 23 24 import java.lang.reflect.Field; 24 import java.time.Instant; 25 import java.time.LocalDateTime; 26 import java.time.OffsetDateTime; 27 import java.time.ZonedDateTime; 25 28 import java.util.Calendar; 26 29 import java.util.Collection; 27 30 import java.util.Date; 28 import java.util.Iterator;29 31 import java.util.List; 30 32 import java.util.Map; 31 33 32 34 import javax.persistence.FlushModeType; 35 import javax.persistence.LockModeType; 33 36 import javax.persistence.Parameter; 34 37 import javax.persistence.TemporalType; … … 41 44 import org.hibernate.query.NativeQuery; 42 45 import org.hibernate.query.QueryParameter; 43 import org.hibernate.query.internal.AbstractProducedQuery;44 import org.hibernate.query.internal.QueryParameterBindingsImpl;45 import org.hibernate.query.spi.QueryParameterBinding;46 46 import org.hibernate.engine.query.spi.sql.NativeSQLQueryReturn; 47 47 import org.hibernate.type.Type; … … 434 434 { 435 435 query.setParameterList(parameter, values); 436 clearOldParameterListParameters(parameter.getName());437 436 return this; 438 437 } … … 443 442 { 444 443 query.setParameterList(name, values); 445 clearOldParameterListParameters(name);446 444 return this; 447 445 } … … 452 450 { 453 451 query.setParameterList(name, values, type); 454 clearOldParameterListParameters(name);455 452 return this; 456 453 } … … 460 457 { 461 458 query.setParameterList(name, values, type); 462 clearOldParameterListParameters(name);463 459 return this; 464 460 } … … 468 464 { 469 465 query.setParameterList(name, values); 470 clearOldParameterListParameters(name);471 466 return this; 472 467 } … … 512 507 513 508 514 // Reference to the "QueryParameterBindingsImpl.parameterBindingMap" variable515 private Field parameterBindingMap;516 509 517 /** 518 We need to remove "synthetic" parameters from the "parameterBindingMap". 519 The parameters are created by Hibernate when a list-type parameter is 520 specified on a query: name_0, name_1, etc. The problem is that the 521 "synthetic" parameters are never cleared and if the same query is re-used 522 with a shorter list, Hibernate will try to set the non-existing parameters 523 which causes an exception. See http://base.thep.lu.se/ticket/2110 524 UPDATE: We also need to check for copied parameter (name) in case the list 525 contained only a single element. See http://base.thep.lu.se/ticket/2113 526 */ 527 @SuppressWarnings({ "unchecked", "rawtypes" }) 528 private void clearOldParameterListParameters(String parameterName) 529 { 530 try 531 { 532 if (parameterBindingMap == null) 533 { 534 parameterBindingMap = QueryParameterBindingsImpl.class.getDeclaredField("parameterBindingMap"); 535 parameterBindingMap.setAccessible(true); 536 } 537 538 String prefixOfParametersToRemove = parameterName + "_"; 539 Map<QueryParameter<?>, QueryParameterBinding<?>> m = (Map)parameterBindingMap.get(((AbstractProducedQuery)query).getQueryParameterBindings()); 540 Iterator<QueryParameter<?>> i = m.keySet().iterator(); 541 while (i.hasNext()) 542 { 543 String name = i.next().getName(); 544 if (name.startsWith(prefixOfParametersToRemove) || name.equals(parameterName)) 545 { 546 i.remove(); 547 } 548 } 549 } 550 catch (Exception ex) 551 { 552 throw new RuntimeException(ex); 553 } 554 } 510 511 @Override 512 public NativeQuery<R> setFirstResult(int firstResult) 513 { 514 query.setFirstResult(firstResult); 515 return this; 516 } 517 518 @Override 519 public NativeQuery<R> setMaxResults(int maxResults) 520 { 521 query.setMaxResults(maxResults); 522 return this; 523 } 524 525 @Override 526 public NativeQuery<R> setHint(String name, Object value) 527 { 528 query.setHint(name, value); 529 return this; 530 } 531 532 @Override 533 public NativeQuery<R> setLockMode(LockModeType lockMode) 534 { 535 query.setLockMode(lockMode); 536 return this; 537 } 538 539 @Override 540 public NativeQuery<R> setParameter(int position, Instant value, TemporalType type) 541 { 542 query.setParameter(position, value, type); 543 return this; 544 } 545 546 @Override 547 public NativeQuery<R> setParameter(int position, LocalDateTime value, TemporalType type) 548 { 549 query.setParameter(position, value, type); 550 return this; 551 } 552 553 @Override 554 public NativeQuery<R> setParameter(int position, OffsetDateTime value, TemporalType type) 555 { 556 query.setParameter(position, value, type); 557 return this; 558 } 559 560 @Override 561 public NativeQuery<R> setParameter(int position, ZonedDateTime value, TemporalType type) 562 { 563 query.setParameter(position, value, type); 564 return this; 565 } 566 567 @Override 568 public NativeQuery<R> setParameter(Parameter<Instant> param, Instant value, TemporalType type) 569 { 570 query.setParameter(param, value, type); 571 return this; 572 } 573 574 @Override 575 public NativeQuery<R> setParameter(Parameter<LocalDateTime> param, LocalDateTime value, TemporalType type) 576 { 577 query.setParameter(param, value, type); 578 return this; 579 } 580 581 @Override 582 public NativeQuery<R> setParameter(Parameter<OffsetDateTime> param, OffsetDateTime value, TemporalType type) 583 { 584 query.setParameter(param, value, type); 585 return this; 586 } 587 588 @Override 589 public NativeQuery<R> setParameter(Parameter<ZonedDateTime> param, ZonedDateTime value, TemporalType type) 590 { 591 query.setParameter(param, value, type); 592 return this; 593 } 594 595 @Override 596 public NativeQuery<R> setParameter(String name, Instant value, TemporalType type) 597 { 598 query.setParameter(name, value, type); 599 return this; 600 } 601 602 @Override 603 public NativeQuery<R> setParameter(String name, LocalDateTime value, TemporalType type) 604 { 605 query.setParameter(name, value, type); 606 return this; 607 } 608 609 @Override 610 public NativeQuery<R> setParameter(String name, OffsetDateTime value, TemporalType type) 611 { 612 query.setParameter(name, value, type); 613 return this; 614 } 615 616 @Override 617 public NativeQuery<R> setParameter(String name, ZonedDateTime value, TemporalType type) 618 { 619 query.setParameter(name, value, type); 620 return this; 621 } 622 555 623 } -
trunk/src/core/net/sf/basedb/core/hibernate/QueryWrapper.java
r7381 r7522 849 849 850 850 @Override 851 @Deprecated 851 852 public RowSelection getQueryOptions() 852 853 { … … 1069 1070 } 1070 1071 1072 @SuppressWarnings("rawtypes") 1073 @Override 1074 @Deprecated 1075 public org.hibernate.Query<R> setParameterList(int param, Collection values) 1076 { 1077 query.setParameterList(param, values); 1078 return this; 1079 } 1080 1081 @SuppressWarnings("rawtypes") 1082 @Override 1083 @Deprecated 1084 public org.hibernate.Query<R> setParameterList(int param, Collection values, Type type) 1085 { 1086 query.setParameterList(param, values, type); 1087 return this; 1088 } 1089 1090 @Override 1091 @Deprecated 1092 public org.hibernate.Query<R> setParameterList(int param, Object[] values, Type type) 1093 { 1094 query.setParameterList(param, values, type); 1095 return this; 1096 } 1097 1098 @Override 1099 @Deprecated 1100 public org.hibernate.Query<R> setParameterList(int param, Object[] values) 1101 { 1102 query.setParameterList(param, values); 1103 return this; 1104 } 1105 1071 1106 } -
trunk/src/core/net/sf/basedb/core/hibernate/SessionWrapper.java
r7381 r7522 173 173 } 174 174 175 @Override 176 public Query<?> createFilter(Object collection, String queryString) 175 @SuppressWarnings("deprecation") 176 @Override 177 public org.hibernate.Query<?> createFilter(Object collection, String queryString) 177 178 throws HibernateException 178 179 { -
trunk/src/core/net/sf/basedb/core/hibernate/StatelessSessionWrapper.java
r7381 r7522 146 146 */ 147 147 @Override 148 public Query<?> createQuery(String queryString) 148 @SuppressWarnings("deprecation") 149 public org.hibernate.Query<?> createQuery(String queryString) 149 150 throws HibernateException 150 151 { 151 Query<?> q = getCachedQuery(queryString); 152 if (q == null) 153 { 154 q = session.createQuery(queryString); 155 q.setFetchSize(HibernateUtil.getJdbcFetchSize()); 156 cacheQuery(queryString, q); 157 } 152 org.hibernate.Query<?> q = session.createQuery(queryString); 153 q.setFetchSize(HibernateUtil.getJdbcFetchSize()); 158 154 return q; 159 155 } … … 166 162 @Override 167 163 @Deprecated 168 public NativeQuery<?> createSQLQuery(String queryString)164 public org.hibernate.SQLQuery<?> createSQLQuery(String queryString) 169 165 throws HibernateException 170 166 { 171 Query<?> q = getCachedQuery(queryString); 172 if (q == null || !(q instanceof NativeQuery)) 173 { 174 q = session.createSQLQuery(queryString); 175 q.setFetchSize(HibernateUtil.getJdbcFetchSize()); 176 } 177 return (NativeQuery<?>)q; 167 org.hibernate.SQLQuery<?> q = session.createSQLQuery(queryString); 168 q.setFetchSize(HibernateUtil.getJdbcFetchSize()); 169 return q; 178 170 } 179 171 … … 222 214 */ 223 215 @Override 224 public Query<?> getNamedQuery(String queryName) 216 @SuppressWarnings("deprecation") 217 public org.hibernate.Query<?> getNamedQuery(String queryName) 225 218 throws HibernateException 226 219 { 227 Query<?> q = getCachedQuery(queryName); 228 if (q == null) 229 { 230 q = session.getNamedQuery(queryName); 231 cacheQuery(queryName, q); 232 } 220 org.hibernate.Query<?> q = session.getNamedQuery(queryName); 233 221 return q; 234 222 } -
trunk/src/install/net/sf/basedb/install/InitDB.java
r7521 r7522 215 215 String message = 216 216 "--System information-----------------------------\n" + 217 "BASE : " + Version.getVersion() + "\n" + 218 "Database : " + dbUrl + "\n" + 219 "Dialect : " + Config.getString("db.dialect") + "\n" + 220 "JDBC : " + driverClass + "; " + driverVersion + "\n" + 221 "Java : " + properties.getProperty("java.runtime.name") + "; " + 217 "BASE : " + Version.getVersion() + "\n" + 218 "Database : " + dbUrl + "\n" + 219 "Dialect : " + Config.getString("db.dialect") + "\n" + 220 "JDBC : " + driverClass + "; " + driverVersion + "\n" + 221 "Hibernate : " + org.hibernate.Version.getVersionString() + "\n"+ 222 "Java : " + properties.getProperty("java.runtime.name") + "; " + 222 223 properties.getProperty("java.runtime.version") + "; " + 223 224 properties.getProperty("java.vendor") + "\n" + 224 "OS : " + properties.getProperty("os.name") +"; " +225 "OS : " + properties.getProperty("os.name") +"; " + 225 226 properties.getProperty("os.arch") + "; " + 226 227 properties.getProperty("os.version") +"\n" + -
trunk/src/test/TestUtil.java
r7521 r7522 286 286 String message = 287 287 "--System information-----------------------------\n" + 288 "BASE : " + Version.getMajor() + "." +289 Version.getMinor() + "." + Version.getMaintenance() + Version.getSuffix()+ "\n" +290 "D atabase : " + database+ "\n" +291 " Dialect : " + Config.getString("db.dialect") + "\n" +292 "JDBC : " + driverClass + "; " + driverVersion + "\n" +293 "URL : " + dbUrl + "\n" +294 "Java : " + properties.getProperty("java.runtime.name") + "; " +288 "BASE : " + Version.getVersion() + "\n" + 289 "Database : " + database + "\n" + 290 "Dialect : " + Config.getString("db.dialect") + "\n" + 291 "Hibernate : " + org.hibernate.Version.getVersionString() + "\n"+ 292 "JDBC : " + driverClass + "; " + driverVersion + "\n" + 293 "URL : " + dbUrl + "\n" + 294 "Java : " + properties.getProperty("java.runtime.name") + "; " + 295 295 properties.getProperty("java.runtime.version") + "; " + 296 296 properties.getProperty("java.vendor") + "\n" + 297 "OS : " + properties.getProperty("os.name") +"; " +297 "OS : " + properties.getProperty("os.name") +"; " + 298 298 properties.getProperty("os.arch") + "; " + 299 299 properties.getProperty("os.version") +"\n" + -
trunk/src/test/net/sf/basedb/test/TestUtil.java
r7521 r7522 38 38 import net.sf.basedb.core.DbControl; 39 39 import net.sf.basedb.core.SessionControl; 40 import net.sf.basedb.core.Version; 40 41 import net.sf.basedb.core.authentication.LoginRequest; 41 42 … … 258 259 String message = 259 260 "--System information-----------------------------\n" + 260 "BASE : " + Application.getMajorVersion() + "." + 261 Application.getMinorVersion() + "." + 262 Application.getMaintenanceVersion() + "\n" + 263 "Database : " + database + "\n" + 264 "Dialect : " + Config.getString("db.dialect") + "\n" + 265 "JDBC : " + driverClass + "; " + driverVersion + "\n" + 266 "URL : " + dbUrl + "\n" + 267 "Java : " + properties.getProperty("java.runtime.name") + "; " + 261 "BASE : " + Version.getVersion() + "\n" + 262 "Database : " + database + "\n" + 263 "Dialect : " + Config.getString("db.dialect") + "\n" + 264 "Hibernate : " + org.hibernate.Version.getVersionString() + "\n"+ 265 "JDBC : " + driverClass + "; " + driverVersion + "\n" + 266 "URL : " + dbUrl + "\n" + 267 "Java : " + properties.getProperty("java.runtime.name") + "; " + 268 268 properties.getProperty("java.runtime.version") + "; " + 269 269 properties.getProperty("java.vendor") + "\n" + 270 "OS : " + properties.getProperty("os.name") +"; " +270 "OS : " + properties.getProperty("os.name") +"; " + 271 271 properties.getProperty("os.arch") + "; " + 272 272 properties.getProperty("os.version") +"\n" +
Note: See TracChangeset
for help on using the changeset viewer.