Tag: jpa

使用JPA保持Map

什么是在类中持久保存以下地图的最佳方法: @Entity class MyClass { @ManyToMany(cascade = CascadeType.ALL) Map myMap = new HashMap(); } 我试过这个,但代码导致: 引起:org.hibernate.AnnotationException:使用@OneToMany或@ManyToMany定位未映射的类:mypackage.myClass.myMap [java.lang.Float]

如何在entitymanager createNativeMethod中回滚

我正在使用本机方法的实体管理器,我想在发生一些错误时回滚。为此,我尝试了@Transactional注释,但这不回滚.Below是我的示例代码 调节器 @Autowired ServiceImpl ServiceImpl; @RequestMapping(“/saveinfo”) @ResponseBody @Transactional public String saveinfo(Long id) { ServiceImpl.saveInfo(id); } 服务类 @Autowired DAOImpl daoImpl; @Transactional public String saveinfo(Long id) { daoImpl.saveInfo1(id); daoImpl.saveInfo12(id); daoImpl.saveInfo12(id); } DAOclass @Override public BigInteger saveInfo11() { Query query = entityManagerUtil.entityManager().createNativeQuery(“insert query”); return (BigInteger)query.getSingleResult(); } @Override public BigInteger saveInfo12() { Query query = entityManagerUtil.entityManager().createNativeQuery(“insert query”); return (BigInteger)query.getSingleResult(); […]

为什么在首先合并实体时,我会将已删除的实例传递给合并

我相信我想删除的实体是一个管理实体。 但是,无论如何,为什么合并它然后删除它给我以下错误: 删除的实例传递给合并 有人在stackoverflow上说,如果它是一个托管实体,那么应该忽略该合并。 那为什么不被忽视呢? 我希望删除它的方式是这样的: TrialUser mergedEntity = em.merge(tu); em.remove(mergedEntity); 但这个错误,但如果我摆脱第一行它似乎工作正常。 但我想要另一种方式,因为这与代码的其余部分是一致的。 编辑: @PersistenceContext(unitName = “UnitName”) protected EntityManager entityManager; @Table(name=”TRIAL_USER”) @Id private BigDecimal id; @ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER) @JoinColumn(name=”TRIAL_USER_CLASS_ID3″) private TrialUserElement trialUserElement3; @ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER) @JoinColumn(name=”TRIAL_USER_CLASS_ID1″) private TrialUserElement trialUserElement1; @ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER) @JoinColumn(name=”TRIAL_USER_CLASS_ID2″) private TrialUserElement trialUserElement2;

具有LEAST和GREATESTfunction的JPA CriteriaQuery

我有一个问题,我需要使用LEAST和GREATEST函数连接两个表,但使用JPA CriteriaQuery。 这是我想要复制的SQL … select * from TABLE_A a inner join TABLE_X x on ( a.COL_1 = least(x.COL_Y, x.COL_Z) and a.COL_2 = greatest(x.COL_Y, x.COL_Z) ); 我看过CriteriaBuilder.least(..)和最大的(..) ,但是我很难理解如何创建Expression以传递给任一函数。

JPA 1.0错误:该名称不是公认的实体或标识符。 已知实体名称:

我尝试执行简单的JPA 1.0代码时遇到exception。 可能是什么原因? 5453 DevPQRWDPBSSPersist WARN [P=351601:O=0:CT] openjpa.Enhance – This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: “[class com.XYZ.PQR.bss.client.db.data.markerentry, class com.XYZ.PQR.bss.client.db.data.Serviceproduct, class com.XYZ.PQR.bss.client.db.data.Agreementterms, class com.XYZ.PQR.bss.client.db.data.Offeringattribute, class com.XYZ.PQR.bss.client.db.data.marker, class com.XYZ.PQR.bss.client.db.data.OfferingpriceadjustmentrelPK, class com.XYZ.PQR.bss.client.db.data.Serviceoffering, class com.XYZ.PQR.bss.client.db.data.Offeringassociation, class com.XYZ.PQR.bss.client.db.data.OfferingpriceserviceofferingrelPK, class com.XYZ.PQR.bss.client.db.data.Offer, class com.XYZ.PQR.bss.client.db.data.Offeringpriceadjustmentrel, […]

JPAinheritanceentitymanager.find生成ClassCastException

我有这样的类层次结构: @Entity @Table (name=”call_distribution_policies”) @Inheritance (strategy=InheritanceType.JOINED) public class CallDistributionPolicy implements Serializable, Cloneable{ —————- } @Entity @Table(name=”skill_based_call_distribution_policies”) public class SkillBasedCallDistributionPolicy extends CallDistributionPolicy { ————– } public class CallDistributionPolicyDAOJPAImpl extends AbstractJPADAOImpl implements CallDistributionPolicyDAO { } public CallDistributionPolicy get(long id) { try { Query query = entityManager .createQuery(“from CallDistributionPolicy where id = :id”); query.setParameter(“id”, id); List resultList = […]

如何找出JPA @Entity中列的长度?

我已经定义了一个String列 @Column(length = 4000) 该属性包含日志信息,可能长于定义的长度。 在这种情况下,可以安全地截断该字段而不抛出错误消息。 我想在poo的DAO类中找出确定的列长度,以便在必要时可以截断字符串。 我怎样才能做到这一点? 问候, 克里斯

原生查询(JPA)未重置并返回相同的旧结果

我有一个本机SQL查询如下: for(init i=0; i <=2 ; i++){ String sql = "Select * from accounts where id = ?"; Query query = em.createNativeQuery(sql,AccountBean.class); query.setParameter(1, i ); AccountBean accountBean = (AccountBean)query.getSingleResult(); } 对于第一个循环,它工作正确,但第一个循环后的任何循环返回相同的结果到第一个,我调试它,参数更改,如果我更改它的工作正确 Query query = em.createNativeQuery(sql,AccountBean.class); 至 Query query = em.createNativeQuery(queryString); 关心Wish79

交易需要例外JPA / Spring

我在存储库类中有一个标记为@Transactional ,正在堆栈跟踪中看到正在执行的方面,但抛出的exception是“Transaction required exception” 我将@Repository注释更改为@Component (似乎它在某些情况下解决了这个问题),但它仍然在Web角色上发生。 这是堆栈跟踪: 2015-04-13 08:00:56,497 [http-nio-8080-exec-9] WARN es.mycompany.util.filters.MyFilter – Error storing : /admin/online/update org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:410) at org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect.ajc$afterThrowing$org_springframework_orm_jpa_aspectj_JpaExceptionTranslatorAspect$1$18a1ac9(JpaExceptionTranslatorAspect.aj:37) at es.mycopmany.dao.MyDAO.updateLastUpdatedTs_aroundBody2(MyDAO.java:36) at es.mycopmany.dao.MyDAO$AjcClosure3.run(MyDAO.java:1) at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96cproceed(AbstractTransactionAspect.aj:66) at org.springframework.transaction.aspectj.AbstractTransactionAspect$AbstractTransactionAspect$1.proceedWithInvocation(AbstractTransactionAspect.aj:72) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96c(AbstractTransactionAspect.aj:70) at es.mycompany.dao.MyDAO.updateLastUpdatedTs(MyDAO.java:31) 以下是抛出exception的代码: @Transactional public void updateLastUpdatedTs(String id, Calendar […]

JPA本机查询返回具有多个表的字段的实体

我在JPA NativeSql中有一个查询,我在那里做表和联接的“联合”,我用所有查询字段创建了一个实体,来自多个表的那些字段,即我不能像通常那样“@colum”“@ table ”。 如何将查询的给定值设置为我的实体?