String queryString = """set xact_abort on; update table_name set column1 = :column1, column2 = :column2 where id = :id"""
Query query = entityManager.createNativeQuery(queryString)
query.setParameter("column1", column1)
query.setParameter("column2", column2)
query.setParameter("id", id)
query.executeUpdate()
@Resource
DataSource dataSource
@Bean
JpaVendorAdapter vendorAdapter(){
return new HibernateJpaVendorAdapter(database:Database.SQL_SERVER)
}
@Bean
AbstractEntityManagerFactoryBean entityManagerFactory(){
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(dataSource:dataSource, jpaVendorAdapter:vendorAdapter())
em.setPackagesToScan("com.mycompany.entity")
return em
}
@Bean
PlatformTransactionManager transactionManager() {
return new JpaTransactionManager(entityManagerFactory:entityManagerFactory().getObject())
}
最后,我使用hibernate拦截器为每个insert和update语句添加“SET xact_abort ON”。
这是我的拦截器:
class XactAbortInterceptor extends EmptyInterceptor{
String onPrepareStatement(String sql) {
if(sql.startsWith("insert") || sql.startsWith("update"))
sql = "set xact_abort on; " + sql
return sql
}
}
下面是我注册拦截器的地方:
@Bean
AbstractEntityManagerFactoryBean entityManagerFactory(){
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(dataSource:dataSource, jpaVendorAdapter:vendorAdapter())
em.setPackagesToScan("com.mycompany.entity")
em.setJpaPropertyMap(["hibernate.ejb.interceptor": XactAbortInterceptor.class.name])
return em
}
问题内容: 该EclipseLink的文件说,我需要在我的pom.xml与Maven得到它下面的条目: 但是当我尝试使用注释时,NetBeans告诉我,找不到该类。确实如此:Eclipselink的javax.persistence包中没有Entity类。 我必须如何使用Maven设置Eclipselink? 问题答案: 该工件不提供JPA 2.0 API ,您需要添加: 为了简单起见,我建议使用
问题内容: 我正在使用Hibernate对数据库进行一些大查询,有时会遇到超时问题。我想避免在每个或上手动设置超时。 我可以为Hibernate配置提供任何属性,为我运行的所有查询设置可接受的默认值吗? 如果没有,如何在Hibernate查询上设置默认超时值? 问题答案: JPA 2定义了 javax.persistence.query.timeout 提示以指定默认超时(以毫秒为单位)。Hibe
问题内容: 我在复合主键中的列排序遇到麻烦。我有一个包含以下内容的表: 在此映射中使用它: 当我使用具体的@Table类将AbstractMessage子类化时,hibernate会创建数据库和表而不会出错。问题在于,hibernate会以我想要的相反顺序生成带有列的复合主键。 我希望主键是 因为我知道我最多将有10个位置,但是每个位置有很多时间。 任何帮助将不胜感激=) 问题答案: 我真的不认为
我试图更好地理解JPA/Hibernate和SQL服务器的注释。 我创建了一个简单的项目:一个名为“Articles”的抽象类。有两个类继承了它:Ramette添加了权重,Pen添加了颜色。下面的代码无效,我无法更正错误。你有什么想法吗?非常感谢。
当我为数据库生成DDL时,我不想有任何外键。 根据< code > javax . persistence . constraint mode ,有一个默认值: 那么如何在Hibernate中设置默认值呢? 我在JPA中使用Hibernate通过Spring Boot数据。
问题内容: 现在,我正在制作一个非常简单的网站- 大约5页。问题是,整合某种类型的数据库映射解决方案是否过时且值得花时间,或者仅使用简单的旧JNDI会更好。我可能需要从数据库中读取/写入很多东西。我想我对这些技术有基本的了解,但是仍然需要大量参考文档。还有其他人面对过这个决定吗? 编辑:抱歉,我应该指定JNDI来查找数据库连接和JDBC以执行操作。 问题答案: 简短的答案:这取决于您要支持的复杂性