Tag: jpa

JPA和枚举类型

我在一个JPA实体中使用枚举类型的一个字段: @Enumerated(value=EnumType.STRING) private Temperament temperament = Temperament.MINEUR_PUR; 我的枚举在我的实体内声明: @Entity public class Joueur implements Serializable { ….. public enum Temperament{ MINEUR_PUR(30), MINEUR(10), NEUTRE(0), RAIDEUR(-10), RAIDEUR_PUR(-30); private int temperament_prod_mines; private Temperament(int temperament_prod_mines){ this.temperament_prod_mines = temperament_prod_mines; } public int getTemperament_prod_mines() { return temperament_prod_mines; } public void setTemperament_prod_mines(int temperament_prod_mines) { this.temperament_prod_mines = temperament_prod_mines; } } } 这是工作,但当我将我的枚举“外化”在它自己的文件中时,它不再起作用了: 引发者:exception[EclipseLink-7151](Eclipse Persistence […]

JPA / Hibernate:加入列时“缺少列”

我对JPA或Hibernate不太熟悉。 我正在接管其他人的代码而我现在只是想让它工作。 鉴于我的理解有限,我会尽量做到尽可能具体,不要淹没不必要的细节。 我有一个运行时exception“org.hibernate.HibernateException:Missing column:name in public.sessions。” 以下是该部分应用程序的基本组织: @Entity @Table(name = “sessions”) public class Session { @ManyToOne @JoinColumns({ @JoinColumn(name = “article_name”, referencedColumnName = “article_name”, insertable = false, updatable = false), @JoinColumn(name = “group_name”, referencedColumnName = “name”, insertable = false, updatable = false) }) private Group group; … } @Entity @Table(name = “groups”) public class Group […]

HQL错误:with-clause引用了两个不同的from子句元素

我开始使用Hibernate并且我正在使用HQL,使用一些连接从数据库中检索数据但是得到此错误,任何有关如何解决此问题的帮助表示赞赏。 Field.hbm.xml文件: Rule.hbm.xml文件: HQL查询: select t.id, t.name, t.src_field_map.id, s1.field_map_nm as src_field_map_nm, t.tgt_field_map.id,s2.field_map_nm as tgt_field_map_nm from Rule as t left join t.src_field_map as s1 left join t.tgt_field_map as s2 with (s1.id = t.src_field_map.id and s2.id = t.tgt_field_map.id) 堆栈跟踪: ERROR: with-clause referenced two different from-clause elements with-clause referenced two different from-clause elements at org.hibernate.hql.internal.ast.HqlSqlWalker.handleWithFragment(HqlSqlWalker.java:465) at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:413) at […]

没有可用于当前线程的实际事务的EntityManager – 无法可靠地处理“刷新”调用

一些背景信息:我正在尝试将一个大项目从Hibernate 3.6.8迁移到5.2.5(包括JPA升级2.0到2.1),Spring 3.2.3到4.3.5并且面临严重问题。 到目前为止,Spring和Hibernate的配置还没有改变,并且在旧版本上运行良好,但是我自己无法解决升级问题。 我得到的例外是: 2017-01-16 10:15:25,635 ERROR [[ACTIVE] ExecuteThread: ’15’ for queue: ‘weblogic.kernel.Default (self-tuning)’] org.myproject.common.messaging.BaseMDB: Code: (11702) Source: (Common) Exception caught – Exception org.springframework.dao.InvalidDataAccessApiUsageException in org.myproject.core.processing.message.MessageReceiverImpl caught org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread – cannot reliably process ‘flush’ call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for […]

在Spring Data JPA存储库中使用@Primary

如果有人需要在Spring Data存储库上使用@Primary:看起来Spring Data JPA会忽略存储库上的@Primary注释。 作为一种解决方法,我创建了BeanFactoryPostProcessor ,它检查给定的存储库是否有@Primary注释并将该bean设置为主要。 这是代码: @Component public class SpringDataPrimaryPostProcessor implements BeanFactoryPostProcessor { public static final String REPOSITORY_INTERFACE_PROPERTY = “repositoryInterface”; @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { makeRepositoriesPrimary(getRepositoryBeans(beanFactory)); } protected List getRepositoryBeans(ConfigurableListableBeanFactory beanFactory) { List springDataRepositoryDefinitions = Lists.newArrayList(); for (String beanName : beanFactory.getBeanDefinitionNames()) { BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName); String beanClassName = beanDefinition.getBeanClassName(); try […]

具有JPA的不同数据库的不同列类型

根据使用的数据库,是否可以使用JPA定义不同的列类型? 我需要将id存储为uuid,它必须是可以保持的。 那就是问题所在。 PostgreSQL有’uuid’,MSSQL’uniqueidentifier’而且Oracle什么都没有,我想必须使用’RAW’。 有人有想法可以帮助我吗? 编辑:当前使用java.util.UUID生成ID并将其作为varchar存储在数据库中。 但是由于该数据类型的性能问题,我想将id存储为uuid类型。 对于Oracle,必须使用RAW类型,因为不存在uuid类型。 如何告诉JPA在Oracle中使用带PostgreSQ / MSSQL和RAW类型的uuid类型?

如何构建一个动态查询,该查询添加了迄今为止的天数,并使用条件API将该日期与另一个日期进行比较?

我有一张A桌和一张B桌。 JPA entity ,A和B类都有joda.time.datetime Persistent Field分别表示retentionDate和lastmodifiedDate 。 A还有一个类型为int Persistent Field 。 现在我想将add number of a.days到a.retentionDate ,然后使用JPA criteria API将其与b.lastmodifiedDate进行比较。 实体类 @Entity @Table(name = “A”) @Data @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) @EqualsAndHashCode(of = “id”, callSuper = false) public class A extends AbstractBaseEntity { @Id @GeneratedValue(generator = “uuid”) @GenericGenerator(name = “uuid”, strategy = “uuid2”) @Column(unique = true, length = […]

与hibernate注释的接口

我想知道我将如何能够注释一个界面 @Entity @Table(name = “FOLDER_TABLE”) public class Folder implements Serializable, Hierarchy { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = “folder_id”, updatable = false, nullable = false) private int fId; @Column(name = “folder_name”) private String folderName; @OneToMany(cascade = CascadeType.ALL) @JoinTable(name = “FOLDER_JOIN_FILE_INFORMATION_TABLE”, joinColumns = { @JoinColumn(name = “folder_id”) }, inverseJoinColumns = { @JoinColumn(name = “file_information_id”) }) private […]

限制JPA中集合的大小

说我有这样的实体 @Entity Class A{ //fields @Onetomany Set b; // } 现在,我如何限制集合中’B’的数量,使得当集合中有新条目时,最旧的条目被删除,有些像我们在LinkedHashMap中有的removeEldestEntry 。 我正在使用带有Hibernate的MySQL 5.5 DB。 提前致谢。 编辑 我的目标是在任何时间点都不要在该表中包含超过N个条目。 我的一个解决方案是使用Set并安排作业来删除旧条目。 但我发现它很脏。 我正在寻找一个更清洁的解决方案。

jax-b xml具有多对多关系的反向引用

我的数据模型中有很多关系。 我一直在尝试使用JAX = B来获取数据模型的XML表示,但是我已经读过一对多的关系: @XmlInverseReference 需要用于映射的反面。 我相信这是为了使用不同的提取类型(即LAZY和EAGER)。 我不确定这个注释是如何工作的。 它是否使用后向指针来确保在某些字段上指定数据时不会获取数据? 我也不知道是否需要用上述注释来注释我的多对多关系。 这是与自身有多对多关系的用户类,即。 用户可以是许多其他用户的朋友。 我应该用@XmlInverseReference注释getter吗? @Entity @Table(name = “users”) public class User implements Serializable { … // bi-directional many-to-many association to User @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) @JoinTable(name = “friends”, joinColumns = { @JoinColumn(name = “uid”) }, inverseJoinColumns = { @JoinColumn(name = “frienduId”) }) private […]