2011-10-20 6 views
2

これは私が持続するすべてのもののようですが、このエラーを引き起こしてIDに401を入力し続けます。これのための任意のヘルプ?@GeneratedValue(strategy = GenerationType.AUTO)ランダムではありません

例外

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DatabaseException 
    Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '401' for key 'PRIMARY' 
    Error Code: 1062 
    Call: INSERT INTO CUBEBID (ID, BIDAMOUNT, SUCCESSBID, WANTEDDATE, CUBE_ID) VALUES (?, ?, ?, ?, ?) 
     bind => [5 parameters bound] 
    Query: InsertObjectQuery(Entity.CubeBid[ id=401 ]) 
     at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324) 
     at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:798) 
     at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:864) 
     at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:583) 
     at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:526) 
     at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1729) 
     at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:234) 
     at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207) 
     at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193) 
     at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:342) 
     at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:162) 
     at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:177) 
     at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:469) 
     at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80) 
     at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90) 
     at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:291) 
     at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58) 
     at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:808) 
     at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:711) 
     at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108) 
     at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85) 
     at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2842) 
     at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1521) 
     at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1503) 
     at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1463) 
     at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:224) 
     at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:123) 
     at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3766) 
     at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1404) 
     at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:616) 
     at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1511) 
     at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:3115) 
     at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:331) 
     at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:157) 
     at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68) 
     at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:437) 
     at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:867) 
     at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5115) 
     at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4880) 
     at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039) 
     at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990) 
     at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:213) 
     at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:79) 
     at $Proxy214.bidCube(Unknown Source) 
     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 com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:241) 
     at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152) 
     at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227) 
     at BusinessLogic.__PartnerBeanLocal_Remote_DynamicStub.bidCube(BusinessLogic/__PartnerBeanLocal_Remote_DynamicStub.java) 
     at BusinessLogic._PartnerBeanLocal_Wrapper.bidCube(BusinessLogic/_PartnerBeanLocal_Wrapper.java) 
     at managedBean.CubeBiddingManagedBean.bidCube(CubeBiddingManagedBean.java:107) 
     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 com.sun.el.parser.AstValue.invoke(AstValue.java:234) 
     at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) 
     at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
     at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148) 
     at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) 
     at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) 
     at javax.faces.component.UICommand.broadcast(UICommand.java:300) 
     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) 
     at com.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:409) 
     at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215) 
     at security.SecurityFilter.doFilter(SecurityFilter.java:67) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) 
     at org.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 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) 
     at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) 
     at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) 
     at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:228) 
     at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) 
     at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) 
     at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) 
     at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 
     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) 
     at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
     at java.lang.Thread.run(Thread.java:662) 

コード:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package Entity; 

import java.io.Serializable; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.ManyToOne; 

/** 
* 
* @author GT 
*/ 
@Entity 
public class CubeBid implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private int bidAmount; 
    private long wantedDate; 
    private boolean successBid; 
    @ManyToOne 
    private Cubes cube; 

    public CubeBid() { 
     successBid = false; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public int getBidAmount() { 
     return bidAmount; 
    } 

    public void setBidAmount(int bidAmount) { 
     this.bidAmount = bidAmount; 
    } 

    public Cubes getCube() { 
     return cube; 
    } 

    public void setCube(Cubes cube) { 
     this.cube = cube; 
    } 

    public boolean isSuccessBid() { 
     return successBid; 
    } 

    public void setSuccessBid(boolean successBid) { 
     this.successBid = successBid; 
    } 

    public long getWantedDate() { 
     return wantedDate; 
    } 

    public void setWantedDate(long wantedDate) { 
     this.wantedDate = wantedDate; 
    } 



    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (id != null ? id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof CubeBid)) { 
      return false; 
     } 
     CubeBid other = (CubeBid) object; 
     if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "Entity.CubeBid[ id=" + id + " ]"; 
    } 

} 
+0

EclipseLink wikiから: 'AUTOの戦略を指定すると、使用する戦略を選択できます。通常、EclipseLinkは最も移植性の高い戦略であるため、TABLEを戦略として選択します。ただし、AUTOを指定する場合は、データベースにデフォルトテーブルを作成するために、スキーマの生成を少なくとも1回は使用する必要があります。 ' - >それをしましたか? – Thomas

答えて

2

GenerationType.AUTOは、基礎となるデータベースに基づいてIDを生成する別の方法を選択します。つまり、一部のデータベースでは、次のIDを含む別のテーブルが必要になる場合があります。新しいテーブルは、新しいエンティティを保持するときにフェッチされ、インクリメントされます。他のデータベースは、サポートされているものと、唯一の主キーかどうかなどの他の要素に応じて、「ID」フィールドまたは「自動インクリメント」フィールドを使用します。

ので、コメントで@Thomasで述べたように、あなたが持っているかもしれない、(例えばEclipseLinkのような)あなたのORMの代わりに、データベース・スキーマ(テーブルなど)

を作成できるようにする必要があるかもしれませんテーブル上のわずかに壊れたメタデータMySQLでは、次のコードを使用してメタデータを修正することができます。

SELECT @my_auto_increment := MAX(id) FROM tablename; 
SET @query = CONCAT("ALTER TABLE tablename auto_increment = ", @my_auto_increment); 
PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
+0

以前はメタデータが壊れているとは思わなかったが、理論的には可能だと思う。 – mjaggard

+0

大丈夫です、代わりに私はSEQUENCEに変更して、エンティティテーブルを再構築しています。すべてが解決された。みんなありがとう! – Foo

関連する問題