2014-01-28 1 views
2

을 실행할 수 없습니다Hibernate는 내가 오류가 JDBC 배치 업데이트

org.hibernate.exception.ConstraintViolationException : JDBC 배치 업데이 트를

을 실행할 수 없습니다 나는에 의해 데이터베이스 내 오브젝트를 지속 다음 코드 entiyManager :

:

public void addPrincipal(Principal u) { 

     trns.start(); 
     trns.getManager().persist(u); 
     trns.commit(); 

} 

TRNS은 나 자신을 쓴 트랜잭션 클래스의 목적은, 여기에 사용 된 방법에 대한 코드입니다 13,

교장 매핑 클래스는 다음과 같습니다 : 데이터베이스에서

@Entity 
@Table(name = "principal") 
public class Principal implements Serializable { 

@Id 

@Column(name = "id_principal") 
private Long id_principal; 

@Column(name = "name") 
private String name; 

@Column(name = "surname") 
private String surname; 

@Column(name = "designation") 
private String designation; 

@Column(name = "address") 
private String address; 

@Column(name = "telephone") 
private String telephone; 

@Column(name = "fax") 
private String fax; 

@Column(name = "email") 
private String email; 

@Column(name = "legal_form") 
private String legal_form; 

@Column(name = "krs") 
private String krs; 

@Column(name = "authority") 
private String authority; 

@Column(name = "pesel_regon") 
private String pesel_regon; 

@Column(name = "nip") 
private String nip; 

@Column(name = "stock") 
private float stock; 

@OneToOne(mappedBy = "principal", cascade = CascadeType.ALL) 
private RepresentationPerson representation_person; 

@OneToOne(mappedBy = "principal", cascade = CascadeType.ALL) 
private ContactPerson contact_person; 

@OneToMany(mappedBy = "principal") 
private Set<StudyCommisioned> study_commisioned; 

얻기 기록이 문제가되지 않습니다. 새 레코드를 데이터베이스에 저장하려고 할 때 유일한 오류가 발생합니다.

전체 스택 추적입니다. 죄송합니다, 나는 잊어 버린 : 교장 (주소, 권한 지정, 이메일, 팩스, KRS, legal_form 이름으로 스택 추적에

인서트를 삽입 문을 실행하는

com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method click in com.vaadin.shared.ui.button.ButtonServerRpc 
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:172) 
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118) 
at com.vaadin.server.AbstractCommunicationManager.handleBurst(AbstractCommunicationManager.java:1678) 
at com.vaadin.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1564) 
at com.vaadin.server.AbstractCommunicationManager.handleUidlRequest(AbstractCommunicationManager.java:582) 
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:315) 
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:170) 
... 26 more 
Caused by: com.vaadin.event.ListenerMethod$MethodException: Invocation of method buttonClick in pl.edu.utp.badania.ui.innercomponents.AddPrincipal$1 failed. 
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:528) 
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:167) 
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:984) 
at com.vaadin.ui.Button.fireClick(Button.java:367) 
at com.vaadin.ui.Button$1.click(Button.java:56) 
... 31 more 
Caused by: javax.persistence.RollbackException: Error while committing the transaction 
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:93) 
at pl.edu.utp.badania.postgresql.PgSQLTransaction.commit(PgSQLTransaction.java:35) 
at pl.edu.utp.badania.postgresql.dao.PrincipalDAO.addPrincipal(PrincipalDAO.java:28) 
at pl.edu.utp.badania.ui.innercomponents.AddPrincipal$1.buttonClick(AddPrincipal.java:147) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508) 
... 35 more 
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update 
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1389) 
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1317) 
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:81) 
... 43 more 
Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275) 
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268) 
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184) 
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) 
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) 
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216) 
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383) 
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133) 
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76) 
... 43 more 

Caused by: java.sql.BatchUpdateException: Zadanie wsadowe 0 insert into principal (address, authority, designation, email, fax, krs, legal_form, name, nip, pesel_regon, stock, surname, telephone, id_principal) values ('sdasd', 'dfsd', 'asdasd', '[email protected]', '3211', '12456', 'Osoba fizyczna', 'dasdas', '4312', '3212', 11.0, 'asdasd', '1234', 2) zostało przerwane. Wywołaj getNextException by poznać przyczynę. 
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2753) 
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1887) 
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:405) 
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2900) 
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) 
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) 
... 51 more 
+1

예외의 전체 스택 추적 매우 유용한 정보를 제공합니다. 그것을 읽고 그것을 게시하십시오. –

+0

** 전체 ** 스택 추적이 아닌 것 같습니다. –

+0

글쎄, Tomcat 로그에서 얻은 전부입니다. – user2717792

답변

1
  • 시도를 'sdasd', 'dfsd', 'asdasd', '[email protected]', '3211', '12456', 'Osoba fizyczna', 'dasdas', ' ','4312 ','3212 ', 11.0,'asdasd ','1234 ', 2)

  • 표의 제약 조건을 확인하십시오. 테이블에 UNIQUE KEY에 더 많은 제약 조건, FOREIGN KEY 제약

0

문제가 @GeneratedValue 주석의 부재 또는 ID를 관리하는 코드 오류로 인해 발생할 수, @GeneratedValue의 경우없는 경우가있을 수 있습니다 의도적이다. JPA 기본 키에 대한 ObjectDB 문서에서

는 :

If an entity has a primary key field that is not marked with @GeneratedValue, automatic primary key value is not generated and the application is responsible to set a primary key by initializing the primary key field.

+0

그러나 @GeneratedValue가 정확히 동일했습니다 – user2717792

+0

@GeneratedValue로 정의 된 매핑은 무엇입니까? GenerationType없이 @GeneratedValue가 사용 되었다면 JPA 제공자 (Hibernate)가 데이터베이스에 따라 기본 키 값을 생성하는 전략을 선택할 것임을 의미합니다. PostgreSQL의 경우 시퀀스가 ​​사용될 문서를 볼 때 나타납니다. id 매핑에 대한 [Hibernate 문서] (https://docs.jboss.org/hibernate/core/4.0/manual/en-US/html/mapping.html#mapping-declaration-id)를 보라. –