Eclipse4.2でGlassFish3.1.2を使用しています。を使用してJTAトランザクションタイプを指定するとjta-data-source
、新しいクラスを追加できます。このクラスは、@Entity
アノテーションを付けるとエンティティとして読み取られます。
ここで、トランザクションタイプをに変更しRESOURCE_LOCAL
、データソースを非jtaに変更し、必要なコードを追加して、およびを呼び出す場所を取得すると、EntityManager
エラーが発生します。エンティティは既知のエンティティタイプではありません。この問題を解決するには、persistence.xmlにリストされているクラスにエンティティを追加する必要があります。
さて、それは私の問題を解決しますが、私は理由がわかりません。仕様に従って、永続ルート内のすべての注釈付きクラスは、指定されていない限り、永続ユニットによって管理される必要があります。つまり、トランザクションタイプを次のように変更したという事実EntityTransaction
begin()
commit()
exclude-unlisted-classes
RESOURCE_LOCAL
違いはありません。
誰か答えがありますか?
編集:いくつかの追加情報。エラーの原因となる簡単なコードがいくつかあります。データベースに通貨を保存することです。永続化は次の形式で行われます。
@Named( "newCurrencyForm2" )
@RequestScoped
public class NewCurrencyForm
{
public Currency getCurrency()
{
return currency;
}
public void createCurrency()
{
EntityManagerFactory factory = Persistence.createEntityManagerFactory( "foo" );
EntityManager manager = factory.createEntityManager();
EntityTransaction transaction = manager.getTransaction();
transaction.begin();
manager.persist( currency );
manager.getTransaction().commit();
}
private Currency currency = new Currency();
}
スタックトレースは次のとおりです。
java.lang.IllegalArgumentException:オブジェクト:com.test.Currency@24cce2ebは既知のエンティティタイプではありません。org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4169)at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:440)at com.test.NewCurrencyForm.createCurrency (NewCurrencyForm.java:26)com.test.NewCurrencyForm $ Proxy $ _ $$ WeldClientProxy.createCurrency(NewCurrencyForm $ Proxy $$$ _ WeldClientProxy.java)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java .lang.reflect.Method.invoke(Method.java:601)at com.sun.el.parser.AstValue.invoke(AstValue.java:254)at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302 )org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)atcom.sun.faces.facelets。 el.TagMethodExpression.invoke(TagMethodExpression.java:105)at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)at javax.faces.component.UICommand.broadcast(UICommand.java:315)at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot .java:794)at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)atcom.sun.faces.lifecycle。 Phase.doPhase(Phase.java:101)at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)at org.apache .catalina.core.StandardWrapper.service(StandardWrapper.java:1542)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)atorg.apache.catalina.core.StandardContextValve。invoke(StandardContextValve.java:175)at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)at org.apache .catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java :231)com.sun.enterprise.v3.services.impl.ContainerMapper $ AdapterCallable.call(ContainerMapper.java:317)at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195 )com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)atcom.sun.grizzly.http.ProcessorTask。process(ProcessorTask.java:1045)at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)at com.sun.grizzly .DefaultProtocolChain.execute(DefaultProtocolChain.java:104)at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)at com sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)at com.sun.grizzly.ContextTask.run(ContextTask.java:71)at com .sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)(com.sun.grizzly.util.AbstractThreadPool $ Worker)。run(AbstractThreadPool.java:513)at java.lang.Thread.run(Thread.java:722)