java entity 参照值_java – 使用entityManager.persist(Object)插入…值...

public void miseAJourTranscoIdCroisiere(Integer idCroisiereKaravel, String idCroisiereArmateur, TypeArmateur typeArmateur) {

IdCroisiereKaravelArmateur idRelationship = new IdCroisiereKaravelArmateur();

idRelationship.setIdCroisiereKaravel(idCroisiereKaravel);

idRelationship.setIdCroisiereArmateur(idCroisiereArmateur);

idRelationship.setTypeArmateur(typeArmateur);

entityManager.persist(idRelationship);

}

这个代码片段是否应该由itslf工作?它不会抛出异常.但它什么都没做.我对Java的持久性感到困惑.

既然我不能用hql插入…值,我应该直接用jpa做,对吧?

我试着去做in this way,但我得到了这个

java.lang.IllegalStateException: Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead

at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:198)

at $Proxy19.getTransaction(Unknown Source)

at com.karavel.connectivity.gateway.croisiere.common.repository.impl.CatalogueKaravelRepositoryImpl.miseAJourTranscoIdCroisiere(CatalogueKaravelRepositoryImpl.java:56)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)

at $Proxy23.miseAJourTranscoIdCroisiere(Unknown Source)

at com.karavel.connectivity.gateway.croisiere.controller.service.RechercherCroisiereController.getItineraireCroisiere(RechercherCroisiereController.java:385)

at com.karavel.connectivity.gateway.croisiere.controller.service.RechercherCroisiereController.obtenirListeCroisiere(RechercherCroisiereController.java:283)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)

at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)

at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:193)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:662)

所以我考虑创建另一个EntityManager来执行此操作.但是它不是静态方法我不能使用EntityManagerFactory.

在ddbb中做一个简单的插入可能会如此混乱?

如果我说愚蠢或混合概念,我很抱歉,但我有两天的Java持久性和Hibernate经验.

编辑以显示我的课程:

我需要一个事务,但我不能从共享的EntityManager中获取它(这意味着什么?)

我是否只需要一个EntityManager?如果我这样做,我不能使用EntityManagerFactory作为静态.

对不起,我不是在创建这种架构.我刚开始使用Spring和Hibernate,所以这里有一个很大的组合……

ApplicationContext的:

persistence:

com.karavel.connectivity.gateway.croisiere.common.domain.cataloguekaravel.IdCroisiereKaravelArmateur

com.karavel.connectivity.gateway.croisiere.common.domain.cataloguekaravel.CroisiereInfoCatalogueKaravel

com.karavel.connectivity.gateway.croisiere.common.domain.cataloguekaravel.CroisiereOffreItineraireCatalogueKaravel

com.karavel.connectivity.gateway.croisiere.common.domain.cataloguekaravel.EscaleCatalogueKaravel

com.karavel.connectivity.gateway.croisiere.common.domain.cataloguekaravel.CroisiereItineraireCatalogueKaravel

实体:

@Entity

@Table(name="transco_idcroisierekaravel_idcroisierearmateur")

public class IdCroisiereKaravelArmateur implements Serializable {

private static final long serialVersionUID = -2764921376397148157L;

@Id

@GeneratedValue

@Column(name="id")

private Integer id;

@Column(name="idCroisiereKaravel")

private Integer idCroisiereKaravel;

@Column(name="idCroisiereArmateur")

private String idCroisiereArmateur;

@Column(name="typeArmateur")

@Enumerated(EnumType.STRING)

private TypeArmateur typeArmateur;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public Integer getIdCroisiereKaravel() {

return idCroisiereKaravel;

}

public void setIdCroisiereKaravel(Integer idCroisiereKaravel) {

this.idCroisiereKaravel = idCroisiereKaravel;

}

public String getIdCroisiereArmateur() {

return idCroisiereArmateur;

}

public void setIdCroisiereArmateur(String idCroisiereArmateur) {

this.idCroisiereArmateur = idCroisiereArmateur;

}

public TypeArmateur getTypeArmateur() {

return typeArmateur;

}

public void setTypeArmateur(TypeArmateur typeArmateur) {

this.typeArmateur = typeArmateur;

}

}

知识库

@SuppressWarnings("unchecked")

public class CatalogueKaravelRepositoryImpl implements CatalogueKaravelRepository {

@PersistenceContext(unitName="gateway-croisiere-catalogueKaravel-persitence-unit")

private EntityManager entityManager;

@Override

@Transactional

public void miseAJourTranscoIdCroisiere(Integer idCroisiereKaravel, String idCroisiereArmateur, TypeArmateur typeArmateur) {

IdCroisiereKaravelArmateur idRelationship = new IdCroisiereKaravelArmateur();

idRelationship.setIdCroisiereKaravel(idCroisiereKaravel);

idRelationship.setIdCroisiereArmateur(idCroisiereArmateur);

idRelationship.setTypeArmateur(typeArmateur);

EntityManager em = getEntityManager();

// begin transaction

em.getTransaction().begin();

// persist object - add to entity manager

em.persist(idRelationship);

// flush em - save to DB

em.flush();

// commit transaction at all

em.getTransaction().commit();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值