Tag: 冬眠

在Hibernate 5中如何自动连接SessionFactory?

我尝试autowire SessionFactory,但得到这个错误: APPLICATION FAILED TO START *************************** Description: Field bookRepository in com.test.app.BookService required a bean named 'entityManagerFactory' that could not be found. 在这里我自动装配SessionFactory: @Service class TestClass{ @Autowired lateinit var sessionFactory: SessionFactory …… } 这是我的配置类: @Configuration class SpringConfig { @Bean fun sessionFactory(emf: EntityManagerFactory): HibernateJpaSessionFactoryBean { val fact = HibernateJpaSessionFactoryBean() fact.entityManagerFactory = emf return fact } } […]

Hibernate @OneToMany连接表抛出StackOverflowException

我正在建立一个hibernate实体关系,设置如下: 用户可以创建分配。 用户可以与其他用户分配任务,给他们任务。 我的目标是有一个用户,如下所示: {id:1,作业:[{name:'test'}],partialAssignment:[{task:'bla'}]} 和这样的任务:{id:1,用户:{…},assignedUsers:[{…}],…} 分配: @Entity @Table(name = "Assignment") data class Assignment ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false, updatable = false) val id: Long? = null, @Column(name = "name") val name: String? = null, @Column(name = "dueDate") @Temporal(TemporalType.TIMESTAMP) val dueDate: Date? = null, @ManyToOne @JoinColumn(name = "userId") var […]

在Hibernate中使用hbm2ddl和双实体管理器

我试图将数据库分成两部分,想知道在Hibernate中是否有两个实体管理器,但是特定地标记某些实体只能由两个实体管理器中的一个来获取。 // setup primary DB Persistence.createEntityManagerFactory("default", paramsDefault.toTypedArray())) // setup audit DB Persistence.createEntityManagerFactory("audit", paramsAudit.toTypedArray())) 在我的配置(这只是为开发,在生产中,我们将不会使用hbm2dll),我有一个行: <property name="hibernate.hbm2ddl.auto" value="update"/> 哪些实体将被执行? 有没有办法强制这个实体: @Entity() @Table(name = "accounts") data class Account( @Column(nullable = false, unique = true) var username: String = "", @Column(nullable = false, unique = true) var email: String = "", …. 仅在使用默认实体管理器而不是审计实体管理器时可用? 换句话说,如何防止在audit数据库上创建Account表,并在default数据库中创建审计实体?

Hibernate保存具有空的父ID的子实体

Hibernate不想保存子实体的ID。 我有以下表格: @Entity @Table(name = "ct_orders") data class Order( @Id @Column(name = "id") @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY) val id: Int = 0, @OneToMany(fetch = FetchType.LAZY, cascade = arrayOf(CascadeType.ALL), mappedBy = "order") val route: List<Route>? = null, … ) @Entity @Table(name = "ct_routes") @JsonIgnoreProperties("id", "order") data class Route( @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) val id: […]

通过外部配置通知命名策略

注意:这是一个Spring / Hibernate的问题。 我碰巧使用Kotlin,但也欢迎Java的答案。 JPA实体必须有一个常量表和目录名称: User.kt : @Entity @Table(name="users", catalog="auth") data class User( @Id val username: String, var password: String ) 这对我来说是个坏消息。 我的MySQL数据库托管同一个应用程序堆栈的几个不同的实例。 结果是:我有各种各样的模式,名字由环境隔开: SHOW DATABASES; sandbox_billing sandbox_auth staging_billing staging_auth preproduction_billing preproduction_auth 每个应用程序上下文都有一个数据源,可以访问两个目录: *_billing (用于域实体)和*_auth (用于身份验证信息)。 我的应用程序有一个可配置的映射com.stackoverflow.persistence.catalog-overrides ,其中可以指定用于该特定应用程序实例的目录名称: application.yml : spring: datasource: url: 'jdbc:mysql://mycooldatabase.com:3306' com.stackoverflow: persistence: catalog-overrides: billing: sandbox_billing auth: sandbox_auth 这个配置被填充到POKO中: PersistenceProperties.kt : @Component […]

遇到多个对数据库序列的引用

构建JHipster应用程序时出现此错误: org.springframework.beans.factory.BeanCreationException:在类路径资源[org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaAutoConfiguration.class]中定义名称为'entityManagerFactory'的bean时出错:init方法的调用失败; 嵌套的异常是org.hibernate.HibernateException:遇到数据库序列[hibernate_sequence]的多个引用尝试toset冲突值为'增量大小'。 发现[1]和[50] 我在这里看到50,但是我不知道1是从哪里来的。 自从最后一次工作以来,我在这些 Kotlin文件中添加了一些新的实体。 我正在将Thinkter管道演示作为一项功能添加到我的应用程序中。 自行演示构建和运行没有任何问题。 为了得到我现在所在的位置,我将演示中的代码复制到了我的应用程序中,并调整了一些与用户实体相关的内容。 由于JHipster不允许您向用户添加字段,因此我创建了一个与其1:1关系的Author实体。 这本身可能与这个错误没有任何关系。 我认为这个新代码中的某些东西必须尝试创建一个序列,并且默认的增量大小是1。

使用@Filter过滤Hibernate实体不会做任何过滤

我有一个标签实体,我想根据公司过滤 @Table @Entity @FilterDef( name = "company", parameters = arrayOf( ParamDef(name = "company", type = "com.domain.Company") ) ) @Filter(name = "company", condition = "company=:company") data class Tag( … @Column(nullable = false) var name: String = "", @ManyToOne var company: Company? = null, ) 现在,当我运行一个查询时,我希望子句WHERE o.company=:company来过滤标签。 val query = em.createQuery("SELECT o FROM Tag AS o", Tag::class.java) […]

方法验证Hibernate

我正在使用Spring Boot + Hibernate + Kotlin。 我想要做的是以下几点: 我有一个问题对象的questionTime和answerTime(见下面的代码)。 我想约束的answerTime总是长于或等于questionTime。 我想要在数据库级别进行限制。 我该怎么做? 我唯一想要的是独立于数据库。 @Entity @Table(name = "question") class Question( @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(updatable = false, nullable = false) var id: Long, @Column(name = "question_time") @ColumnDefault(value = "-1") var questionTime: Int = -1, @Column(name = "answer_time") @ColumnDefault(value = "-1") var answerTime: Int = -1 )

Spring Boot:添加@Transactional会产生java.lang.ClassNotFoundException:org.aspectj.util.PartialOrder $ PartialComparable

用Kotlin和Gradle 3.0 Spring Boot 1.4.2。 当我们尝试将@Transactional添加到控制器方法时,生成的jar无法启动,出现错误: 2016-12-14 15:22:57.055 ERROR 4666 — [ main] osboot.SpringApplication : Application startup failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'personService': Unsatisfied dependency expressed through field 'registrator': Error creating bean with name 'personRegistrator' defined in file [/home/voksiv/projects/svc-bereg/build/classes/main/com/beget/bereg/services/internal/person/commands/PersonRegistrator.class]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/util/PartialOrder$PartialComparable; nested exception is org.springframework.beans.factory.BeanCreationException: Error […]

如何使用Vert.x Web获取当前的Web请求?

我正在写一个使用Hibernate(JPA)+ Vert.x Web(Kotlin)的项目,我需要将EntityManager绑定到Web Request,我的意思是我想要为每个Web请求创建EntityManager。 我需要使用静态方法(Kotlin中的对象)从VertX获得当前的Web请求。 有没有办法做到这一点? 或者我错了,因为VertX是反应?