我有一个问题,我得到一个:org.hibernate.MappingException:没有JDBC类型的Dialect映射:1111尝试使用JPA创建本机查询时调用postgres函数.
我在一个启动单例中创建了一个EJB计时器,每6个小时运行一次Postgres函数.该函数返回void并检查过期记录,删除它们并更新某些状态.它不需要参数,它返回void.
如果我使用PgAdmin查询工具(select function();)调用它并返回void,则postgres函数运行完美.
当我在Glassfish 3.1.1上部署应用程序时,我遇到异常并且部署失败.
这是(缩短的)堆栈跟踪:
WARNING: A system exception occurred during an invocation on EJB UserQueryBean method public void com.mysoftwareco.entity.utility.UserQueryBean.runRequestCleanup()
javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
...STACK TRACE BLAH BLAH BLAH ...
Caused by: javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
Run Code Online (Sandbox Code Playgroud)
这是代码:
首先是JPA的东西:
public void runRequestCleanup() {
String queryString = "SELECT a_function_that_hibernate_chokes_on()";
Query query = em.createNativeQuery(queryString);
Object result = query.getSingleResult();
}
Run Code Online (Sandbox Code Playgroud)
这是单身人士称之为:
@Startup
@Singleton
public class RequestCleanupTimer {
@Resource
TimerService timerService;
@EJB
UserQueryBean queryBean;
@PostConstruct …Run Code Online (Sandbox Code Playgroud) 我使用Hibernate + JPA作为我的ORM解决方案.
我使用HSQL进行单元测试,将PostgreSQL用作真正的数据库.
我希望能够将Postgres的本机UUID类型与Hibernate一起使用,并在其字符串表示中使用UUID和HSQL进行单元测试(因为HSQL没有UUID类型).
我正在使用具有Postgres和HSQL单元测试的不同配置的持久性XML.
这是我如何让Hibernate"看到"我的自定义UserType:
@Id
@Column(name="UUID", length=36)
@org.hibernate.annotations.Type(type="com.xxx.UUIDStringType")
public UUID getUUID() {
return uuid;
}
public void setUUID(UUID uuid) {
this.uuid = uuid;
}
Run Code Online (Sandbox Code Playgroud)
这很有效.但我需要的是能够在XML中替换注释的"com.xxx.UUIDStringType"部分,或者从可以在不重新编译的情况下更改的属性文件.
有任何想法吗?
我遇到了按照标题的错误query.getResultList();运行本机查询时在类文件上JsonbHibernateExampleApplicationTests返回 json 对象。
json返回非类型列没有问题。
请协助并让我知道是否需要更多信息。
下面是源代码
public class JsonbHibernateExampleApplicationTests {
@Autowired
private PersonRepository repository;
@Autowired
private ApplicationContext appContext;
@Test
public void contextLoads() {
EntityManagerFactory entityManagerFactory = (EntityManagerFactory) appContext
.getBean("entityManagerFactory");
EntityManager entityManager = entityManagerFactory.createEntityManager();
String sql = "select additional_data from person";
javax.persistence.Query query = entityManager.createNativeQuery(sql);
query.getResultList();
//List<JsonDataUserType> list = (List<JsonDataUserType>) query.getResultList();
/* System.out.println("list:" + list);
for (JsonDataUserType json: list)
{
System.out.println("json:" + json);
}*/
//List<Object[]> objects = query.getResultList();
//System.out.println("result:"+ objects);
}
}
Run Code Online (Sandbox Code Playgroud)
我在实体中将additional_data列指定为自定义json类型
@Type(type = "JsonDataUserType") …Run Code Online (Sandbox Code Playgroud) 我想使用MySQL数据库,而不是像hsqldb那样使用运行时数据库.我克隆了这个存储库,它使用hsqldb作为其数据库.
因为我想学习如何使用基于rest的spring应用程序的关系数据库.所以我对pom.xml进行了以下更改:更改了pom.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springsource.restbucks</groupId>
<artifactId>restbucks</artifactId>
<packaging>war</packaging>
<version>1.0.0.BUILD-SNAPSHOT</version>
<name>Spring RESTBucks</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.5.RELEASE</version>
</parent>
<properties>
<spring-data-releasetrain.version>Evans-RC1</spring-data-releasetrain.version>
<tomcat.version>8.0.9</tomcat.version>
</properties>
<dependencies>
<!-- Spring Data REST -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- JDK 8 DateTime support for Hibernate -->
<dependency>
<groupId>org.jadira.usertype</groupId>
<artifactId>usertype.extended</artifactId>
<version>3.2.0.GA</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
<!-- Database >
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId> …Run Code Online (Sandbox Code Playgroud) java ×3
hibernate ×2
jpa ×2
annotations ×1
function ×1
hsqldb ×1
json ×1
mysql ×1
spring ×1
spring-boot ×1