Hallo,
Beim ausführen einer JPA Query bekomme ich folgenden Fehler:
"Die Datentypen time und datetime sind im greater than or equal to-Operator inkompatibel."
Was mich vermuten lässt, dass etwas mit dem @Temporal Mapping nicht korrekt funktioniert.
### SQL SERVER 10.50.1600.1 ###
Feld:
Ende time(0)
### Mapping Details###
@Entity
@Table(name="[Abgerechnete Zeit]")
public class BuchungStundenabrechnung
private Date ende; //(java.sql.Time wirft auch einen Typfehler)
@Temporal(TemporalType.TIME)
@Column(name="Ende")
public Date getEnde() {
return ende;
}
### Config Datasource###
<bean id="stundenabrechnungDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="xxx"/>
<property name="password" value="xxx"/>
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="jdbcUrl" value="jdbc:sqlserver://xxx:1433;database=stundenabrechnungTestSQL"/>
</bean>
### Config Entitymanager ###
<bean id="entityManagerFactoryStundenabrechnung" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- <property name="persistenceUnitManager" ref="pum"></property> -->
<property name="persistenceUnitName" value="stundenabrechnungDB_pu"></property>
<property name="dataSource" ref="stundenabrechnungDataSource"/>
</bean>
### Config PU ###
<persistence-unit name="stundenabrechnungDB_pu" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider> <class>de.daphi.integrationwebapp.stundenabrechnung.domain.BuchungStundenabrechnung</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.use_sql_comments" value="true" />
<property name="hibernate.cache.use_query_cache" value="false" />
<property name="hibernate.cache.use_second_level_cache" value="false" />
</properties>
</persistence-unit>
Der selbe Test auf ein Feld in einer Mysql Datenbank bringt keine Fehlermeldung. @Temporal wird richtig angewendet.
Könnt ihr mir weiterhelfen, Google sagt nichts zu diesem Problem.
Gruß Markus
Beim ausführen einer JPA Query bekomme ich folgenden Fehler:
"Die Datentypen time und datetime sind im greater than or equal to-Operator inkompatibel."
Was mich vermuten lässt, dass etwas mit dem @Temporal Mapping nicht korrekt funktioniert.
Java:
public List<BuchungStundenabrechnung> getZeit() {
Date ende = new Date();
TypedQuery<BuchungStundenabrechnung> q = entityManager.createQuery("select b from BuchungStundenabrechnung b where b.ende >= :ende", BuchungStundenabrechnung.class);
q.setParameter("ende", ende);
return q.getResultList();
}
### SQL SERVER 10.50.1600.1 ###
Feld:
Ende time(0)
### Mapping Details###
@Entity
@Table(name="[Abgerechnete Zeit]")
public class BuchungStundenabrechnung
private Date ende; //(java.sql.Time wirft auch einen Typfehler)
@Temporal(TemporalType.TIME)
@Column(name="Ende")
public Date getEnde() {
return ende;
}
### Config Datasource###
<bean id="stundenabrechnungDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="xxx"/>
<property name="password" value="xxx"/>
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="jdbcUrl" value="jdbc:sqlserver://xxx:1433;database=stundenabrechnungTestSQL"/>
</bean>
### Config Entitymanager ###
<bean id="entityManagerFactoryStundenabrechnung" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- <property name="persistenceUnitManager" ref="pum"></property> -->
<property name="persistenceUnitName" value="stundenabrechnungDB_pu"></property>
<property name="dataSource" ref="stundenabrechnungDataSource"/>
</bean>
### Config PU ###
<persistence-unit name="stundenabrechnungDB_pu" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider> <class>de.daphi.integrationwebapp.stundenabrechnung.domain.BuchungStundenabrechnung</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.use_sql_comments" value="true" />
<property name="hibernate.cache.use_query_cache" value="false" />
<property name="hibernate.cache.use_second_level_cache" value="false" />
</properties>
</persistence-unit>
Der selbe Test auf ein Feld in einer Mysql Datenbank bringt keine Fehlermeldung. @Temporal wird richtig angewendet.
Könnt ihr mir weiterhelfen, Google sagt nichts zu diesem Problem.
Gruß Markus