Tag: hibernate

如何将查询映射到非实体类+实体类

我知道如何在IBatis中查询resultClass映射。 如何将本机查询结果映射到hibernate中混合使用实体类和标量的对象? 我该如何设置参数? 请帮忙。

如何使用JPA(Hibernate)创建与同一实体的关系?

我有一个实体User ,它应该有物业manager ,其中经理是另一个用户(一个经理可以管理很多用户,任何用户可能只有一个经理或没有任何经理)。 我该如何实现呢? 我试过标准的东西 @ManyToOne @JoinColumn (name = ??? /* what should be here? */, nullable = true) private User manager; 但它并不像看起来那么简单……

由于撇号,Hibernate中的QueryException

这是我的查询 SQL_QUERY=”SELECT review.comment FROM ReviewDO review WHERE title='”+titleName+”‘”; 通过使用标题我试图得到它的描述。 例如,如果tileName=”Worth for money”; (没有撇号)查询将是: SQL_QUERY=”SELECT review.comment FROM ReviewDO review WHERE title=’Worth for money’; 我得到了输出。 但如果titleName=”Can’t beat the product”; (用撇号) SQL_QUERY=”SELECT review.comment FROM ReviewDO review WHERE title=’Can’t beat the product’; 我得到org.hibernate.QueryException:期待”’,找到’EOF’ 有什么方法可以避免这个问题吗?

这是正确的(更好的)对象关系映射吗?

我真的很难在我的项目中使用Hibernate。 我在这里描述的一些问题: Hibernate:得到太多行我开始想知道我的代码是否正确。 我正在开发一个庞大的项目,我不得不自己定义带注释的映射类。 但是当问题开始出现时,我决定重新创建与项目分开的数据库部分,并尝试在IDE中生成实体。 我有两个表: My和Option 。 My有主键:列qwerty和property 。 Property是Option表中的外键。 当然, Option将property作为主键。 在我的解决方案中,我创建了具有两个属性的@Embeddable MyPK类: String qwerty和String property 。 在我的My实体中,我当然有@EmbeddedId MyPK和property (与MyPK中的列名相同),但这是Option对象,而不是MyPK中的MyPK 。 @ManyToOne @JoinColumn(name = “property”, nullable = false, insertable = false, updatable = false) protected Option option; 这是由Intellij Idea中的Hibernate Tools生成的实体。 没有EmbeddedId ,但有@IdClass 。 我认为@IdClass仅适用于基本类型。 但我有一个对象作为我的主键的一部分。 但是这里也有OptionEntity对象。 保持一列的基本类型和对象类型是否正确? @javax.persistence.IdClass(test.go.MyEntityPK.class) @javax.persistence.Table(name = “MY”, schema = […]

JPA spring boot内部join – with-clause引用了两个不同的from-clause元素错误

我正在尝试在我的一个JPA存储库中选择内部联接 查询: @Query(value = “select wm.WagerIdentification, wm.BoardNumber, wm.MarkSequenceNumber, wm.MarkNumber,” + ” pt.CouponTypeIdentification, pt.WagerBoardQuickPickMarksBoard ” + “from WagerBoard wb ” + “inner join wb.listOfWagerMarks wm on wb.WagerIdentification = wm.WagerIdentification and wb.BoardNumber = wm.BoardNumber and wb.GameIdentification = wm.GameIdentification and wm.meta_IsCurrent = 1 ” + “inner join wb.poolgameTransaction pt on (wb.TransactionIdentification = pt.TransactionIdentification and pt.meta_IsCurrent = 1)” + […]

带有2个数据库配置的Spring Boot – 使用第二个配置延迟加载不起作用

我有Spring Boot项目,有2个数据库配置。 主数据库配置: @Configuration @EnableTransactionManagement @EnableJpaRepositories(transactionManagerRef = “primaryTransactionManager”, entityManagerFactoryRef = “primaryEntityManagerFactory”, basePackages = { “com.example.repository.primary” }) public class PrimaryDbConfig { @Primary @Bean(name = “primaryDataSource”) @ConfigurationProperties(prefix = “spring.primary.datasource”) public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = “primaryEntityManagerFactory”) public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier(“primaryDataSource”) DataSource dataSource) { return builder.dataSource(dataSource).packages(“com.example.domain.primary”).persistenceUnit(“primary-persistence-unit”).build(); } @Primary @Bean(name = “primaryTransactionManager”) public PlatformTransactionManager […]

哪个SessionFactory应该用于transactionManager?

PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_SUPPORTS,readOnly 我有2个数据源HRappsdao和projectdao,两个都使用不同的sessionFactory。 在这种情况下,我的transactionmanager应该使用哪个sessionfactory? (hrappsdao或projectdao)? editted //my HRappsdao using same

如何将hibernate时间戳映射到MySQL BIGINT?

我正在使用Hibernate 3.x,MySQL 4.1.20和Java 1.6。 我正在将Hibernate Timestamp映射到MySQL TIMESTAMP。 到现在为止还挺好。 问题是MySQL以秒为单位存储TIMESTAMP并丢弃毫秒,现在我需要毫秒精度。 我想我可以在我的表中使用BIGINT而不是TIMESTAMP并转换我的Java代码中的类型。 我试图弄清楚是否有更好的方法使用hibernate,mysql,JDBC或某种组合这样做,所以我仍然可以在我的HSQL和/或SQL查询中使用日期函数?

以编程方式创建一个hibernate析取查询

我有一大堆java代码,它硬编码一个看起来像这样的hibernate析取查询 session = HibernateUtils.beginTransaction(“outpatient”); Criteria criteria = session.createCriteria(AugmentToken.class); session.beginTransaction(); if (type == Constants.ICD9CPT) { criteria.add(Restrictions.disjunction() .add(Restrictions.eq(“codeType”, “d”)) .add(Restrictions.eq(“codeType”, “p”)) .add(Restrictions.eq(“codeType”, “c”))); } else if (type == Constants.EM) { criteria.add(Restrictions.disjunction() .add(Restrictions.eq(“codeType”, “eros”)) .add(Restrictions.eq(“codeType”, “ehpi”)) .add(Restrictions.eq(“codeType”, “epe”))); } 但这不是很优雅的代码。 我想要做的是将一个代码类型数组传递给一个方法,并动态构造dijunction标准。 我看到的每个网站都提供了类似于上面的析取查询示例,但这对我不起作用,因为我不想硬编码标准限制的构造,因为代码类型的数量可能会有所不同。 我该怎么做呢? 谢谢, 埃利奥特

Grails – 为什么需要交易?

首先是一些背景:我使用Spring Security的修改版本来执行Active Directory身份validation,并检查存储在数据库中的可能访问权限。 这意味着在普通的Groovy类中调用从数据库加载信息: if (Holders.config.loadRolesFromDatabase) { Set roles = DomainClassUser.findByUsername(username)?.roles if (roles) authorities.addAll(roles.collect({ new SimpleGrantedAuthority(‘ROLE_’ + it.name) })) } 这在Hibernate 4.3.6.1和Tomcat 7.0.54上运行得很好,但是,在升级它们(到4.3.10.18和8.0.14.1)后,它现在在调用动态查找器时产生“HibernateException:当前线程找不到会话”exception方法。 做了一些研究之后,我决定将这段代码包装在withTransaction块中: if (Holders.config.loadRolesFromDatabase) { DomainClassUser.withTransaction({ Set roles = DomainClassUser.findByUsername(username)?.roles if (roles) authorities.addAll(roles.collect({ new SimpleGrantedAuthority(‘ROLE_’ + it.name) })) }) } 这修复了错误,但是,我不确定为什么这是必需的。 我目前对withTransaction的理解是它用于创建可以在exception情况下回滚的事务等。但是,我不需要在这里执行任何回滚(它只是所有只读调用),为什么我仍然需要一个交易来执行此调用?