Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate подскажите с cascade update 
V
    Опции темы
Killer_13
  Дата 15.6.2012, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Вопрос на который почти каждый кто работает с Hibernate знает ответ. А у меня ошибка лезет.

Значитс - мне нужно сделать каскадное обновление данных.
Сейчас получаю такую вот ошибочку...
Что-то оч большой трейс.. забрасываю в конец.

Вот так сохраняю или делаю апдейт.
Код

    public void saveGame(SaveParams saveParams) {
        int res = 0;
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();

        Query query = session.createQuery("from SaveParams where serverName = :sName ");
        query.setParameter("sName", saveParams.getServerName());
        List listOfSaveParams = query.list();
        if (listOfSaveParams.size()==0) {
            session.save(saveParams);
        } else {
            SaveParams result = (SaveParams) listOfSaveParams.get(0);
            Query q1 = session.createSQLQuery("update SaveParams set serverName = :sName ");
            q1.setParameter("sName", saveParams.getServerName());
            res = q1.executeUpdate();
        }

        session.getTransaction().commit();
    }



Вот так выглядит класс.
Код

package chess.dao;

import java.util.List;

import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name = "SaveParams")
public class SaveParams {

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

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

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

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

    @Column(name = "piecesColorPlayer2")
    private String piecesColorPlayer2;
    
    @Column(name = "chat")
    private String chat;
    
    @Column(name = "time")
    private int time;

    @ElementCollection
    @CollectionTable(name = "moveHistoryPlayer1", joinColumns = @JoinColumn(name = "serverName"))
    @Cascade(CascadeType.SAVE_UPDATE)
    @Column(name = "moveHistoryPlayer1")
    private List<String> moveHistoryPlayer1;

    @ElementCollection
    @CollectionTable(name = "moveHistoryPlayer2", joinColumns = @JoinColumn(name = "serverName"))
    @Cascade(CascadeType.SAVE_UPDATE)
    @Column(name = "moveHistoryPlayer2")
    private List<String> moveHistoryPlayer2;

    @ElementCollection
    @CollectionTable(name = "boardMatrix", joinColumns = @JoinColumn(name = "serverName"))
    @Cascade(CascadeType.SAVE_UPDATE)
    @Column(name = "boardMatrix")
    private List<Integer> boardMatrix;

    @ElementCollection
    @CollectionTable(name = "downPiecesList", joinColumns = @JoinColumn(name = "serverName"))
    @Cascade(CascadeType.SAVE_UPDATE)
    @Column(name = "downPiecesList")
    private List<String> downPiecesList;

    public SaveParams() {

    }

    public String getServerName() {
        return serverName;
    }

    public void setServerName(String serverName) {
        this.serverName = serverName;
    }

    public String getNamePlayer1() {
        return namePlayer1;
    }

    public void setNamePlayer1(String namePlayer1) {
        this.namePlayer1 = namePlayer1;
    }

    public String getNamePlayer2() {
        return namePlayer2;
    }

    public void setNamePlayer2(String namePlayer2) {
        this.namePlayer2 = namePlayer2;
    }

    public String getPiecesColorPlayer1() {
        return piecesColorPlayer1;
    }

    public void setPiecesColorPlayer1(String piecesColorPlayer1) {
        this.piecesColorPlayer1 = piecesColorPlayer1;
    }

    public String getPiecesColorPlayer2() {
        return piecesColorPlayer2;
    }

    public void setPiecesColorPlayer2(String piecesColorPlayer2) {
        this.piecesColorPlayer2 = piecesColorPlayer2;
    }

    public List<String> getMoveHistoryPlayer1() {
        return moveHistoryPlayer1;
    }

    public void setMoveHistoryPlayer1(List<String> moveHistoryPlayer1) {
        this.moveHistoryPlayer1 = moveHistoryPlayer1;
    }

    public List<String> getMoveHistoryPlayer2() {
        return moveHistoryPlayer2;
    }

    public void setMoveHistoryPlayer2(List<String> moveHistoryPlayer2) {
        this.moveHistoryPlayer2 = moveHistoryPlayer2;
    }

    public List<Integer> getBoardMatrix() {
        return boardMatrix;
    }

    public void setBoardMatrix(List<Integer> boardMatrix) {
        this.boardMatrix = boardMatrix;
    }

    public List<String> getDownPiecesList() {
        return downPiecesList;
    }

    public void setDownPiecesList(List<String> downPiecesList) {
        this.downPiecesList = downPiecesList;
    }

    public String getChat() {
        return chat;
    }

    public void setChat(String chat) {
        this.chat = chat;
    }

    public int getTime() {
        return time;
    }

    public void setTime(int time) {
        this.time = time;
    }

}



Спасибо.!

Трейс
Код


21:19:31,374 DEBUG AbstractBatcher:433 - about to close ResultSet (open ResultSets: 1, globally: 1)
21:19:31,374 DEBUG AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
21:19:31,375 DEBUG CollectionLoadContext:232 - 1 collections were found in result set for role: chess.dao.SaveParams.boardMatrix
21:19:31,375 DEBUG CollectionLoadContext:275 - collection fully initialized: [chess.dao.SaveParams.boardMatrix#rrr]
21:19:31,376 DEBUG CollectionLoadContext:241 - 1 collections initialized for role: chess.dao.SaveParams.boardMatrix
21:19:31,376 DEBUG StatefulPersistenceContext:893 - initializing non-lazy collections
21:19:31,376 DEBUG Loader:2182 - done loading collection
21:19:31,376 DEBUG Loader:2158 - loading collection: [chess.dao.SaveParams.downPiecesList#rrr]
21:19:31,377 DEBUG AbstractBatcher:410 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
21:19:31,377 DEBUG SQL:111 - select downpieces0_.serverName as serverName0_0_, downpieces0_.downPiecesList as downPiec2_0_ from downPiecesList downpieces0_ where downpieces0_.serverName=?
Hibernate: select downpieces0_.serverName as serverName0_0_, downpieces0_.downPiecesList as downPiec2_0_ from downPiecesList downpieces0_ where downpieces0_.serverName=?
21:19:31,378 DEBUG AbstractBatcher:426 - about to open ResultSet (open ResultSets: 0, globally: 0)
21:19:31,378 DEBUG Loader:1203 - result set contains (possibly empty) collection: [chess.dao.SaveParams.downPiecesList#rrr]
21:19:31,378 DEBUG Loader:1322 - result row: 
21:19:31,379 DEBUG Loader:1133 - found row of collection: [chess.dao.SaveParams.downPiecesList#rrr]
21:19:31,379 DEBUG Loader:1322 - result row: 
21:19:31,379 DEBUG Loader:1133 - found row of collection: [chess.dao.SaveParams.downPiecesList#rrr]
21:19:31,379 DEBUG AbstractBatcher:433 - about to close ResultSet (open ResultSets: 1, globally: 1)
21:19:31,379 DEBUG AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
21:19:31,380 DEBUG CollectionLoadContext:232 - 1 collections were found in result set for role: chess.dao.SaveParams.downPiecesList
21:19:31,380 DEBUG CollectionLoadContext:275 - collection fully initialized: [chess.dao.SaveParams.downPiecesList#rrr]
21:19:31,380 DEBUG CollectionLoadContext:241 - 1 collections initialized for role: chess.dao.SaveParams.downPiecesList
21:19:31,380 DEBUG StatefulPersistenceContext:893 - initializing non-lazy collections
21:19:31,380 DEBUG Loader:2182 - done loading collection
21:19:31,381 DEBUG JDBCTransaction:130 - commit
21:19:31,381 DEBUG AbstractFlushingEventListener:134 - processing flush-time cascades
21:19:31,383 DEBUG AbstractFlushingEventListener:177 - dirty checking collections
21:19:31,388 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.boardMatrix#rrr], was: [chess.dao.SaveParams.boardMatrix#rrr] (initialized)
21:19:31,388 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.downPiecesList#rrr], was: [chess.dao.SaveParams.downPiecesList#rrr] (initialized)
21:19:31,389 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.moveHistoryPlayer1#rrr], was: [chess.dao.SaveParams.moveHistoryPlayer1#rrr] (initialized)
21:19:31,389 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.moveHistoryPlayer2#rrr], was: [chess.dao.SaveParams.moveHistoryPlayer2#rrr] (initialized)
21:19:31,389 DEBUG AbstractFlushingEventListener:108 - Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
21:19:31,389 DEBUG AbstractFlushingEventListener:114 - Flushed: 0 (re)creations, 0 updates, 0 removals to 4 collections
21:19:31,390 DEBUG Printer:106 - listing entities:
21:19:31,391 DEBUG Printer:113 - chess.dao.SaveParams{downPiecesList=[./lib/images/ChessFigurPack/pawnBlack.png, ./lib/images/ChessFigurPack/pawnWhite.png], boardMatrix=[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 24, 0, 22, -1, -1, -1, -1, 21, 21, 21, 21, 21, 0, 21, 13, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 21, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 11, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 11, 11, 11, 23, 11, 0, 11, 11, -1, -1, -1, -1, 12, 13, 14, 15, 16, 14, 0, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], time=21000, moveHistoryPlayer2=[1 ::  p: f7 - f5, 2 ::  k: g8 - f6, 3 ::  k: f6 - e4, 4 ::  k: e4 - d2], moveHistoryPlayer1=[1 ::  p: f2 - f4, 2 ::  k: g1 - f3, 3 ::  k: f3 - g5, 4 ::  k: g5 - h7], chat=, namePlayer1=r1, serverName=rrr, piecesColorPlayer2=Black, piecesColorPlayer1=White, namePlayer2=dsfd}
21:19:31,392 DEBUG JDBCTransaction:143 - committed JDBC Connection
21:19:31,392 DEBUG ConnectionManager:427 - aggressively releasing JDBC connection
21:19:31,393 DEBUG ConnectionManager:464 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
0
1
2
3
4
5
6
ChessBoardController
21:19:51,293 DEBUG SessionImpl:265 - opened session at timestamp: 13397879912
21:19:51,293 DEBUG JDBCTransaction:78 - begin
21:19:51,293 DEBUG ConnectionManager:444 - opening JDBC connection
21:19:51,293 DEBUG JDBCTransaction:83 - current autocommit status: false
21:19:51,294 DEBUG AbstractBatcher:410 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
21:19:51,294 DEBUG SQL:111 - select saveparams0_.serverName as serverName0_, saveparams0_.chat as chat0_, saveparams0_.namePlayer1 as namePlayer3_0_, saveparams0_.namePlayer2 as namePlayer4_0_, saveparams0_.piecesColorPlayer1 as piecesCo5_0_, saveparams0_.piecesColorPlayer2 as piecesCo6_0_, saveparams0_.time as time0_ from SaveParams saveparams0_ where saveparams0_.serverName=?
Hibernate: select saveparams0_.serverName as serverName0_, saveparams0_.chat as chat0_, saveparams0_.namePlayer1 as namePlayer3_0_, saveparams0_.namePlayer2 as namePlayer4_0_, saveparams0_.piecesColorPlayer1 as piecesCo5_0_, saveparams0_.piecesColorPlayer2 as piecesCo6_0_, saveparams0_.time as time0_ from SaveParams saveparams0_ where saveparams0_.serverName=?
21:19:51,295 DEBUG AbstractBatcher:426 - about to open ResultSet (open ResultSets: 0, globally: 0)
21:19:51,296 DEBUG Loader:1322 - result row: EntityKey[chess.dao.SaveParams#rrr]
21:19:51,296 DEBUG AbstractBatcher:433 - about to close ResultSet (open ResultSets: 1, globally: 1)
21:19:51,296 DEBUG AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
21:19:51,296 DEBUG TwoPhaseLoad:130 - resolving associations for [chess.dao.SaveParams#rrr]
21:19:51,297 DEBUG TwoPhaseLoad:255 - done materializing entity [chess.dao.SaveParams#rrr]
21:19:51,297 DEBUG StatefulPersistenceContext:893 - initializing non-lazy collections
21:19:51,308 DEBUG AbstractFlushingEventListener:134 - processing flush-time cascades
21:19:51,308 DEBUG AbstractFlushingEventListener:177 - dirty checking collections
21:19:51,309 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.boardMatrix#rrr], was: [chess.dao.SaveParams.boardMatrix#rrr] (uninitialized)
21:19:51,309 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.downPiecesList#rrr], was: [chess.dao.SaveParams.downPiecesList#rrr] (uninitialized)
21:19:51,309 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.moveHistoryPlayer1#rrr], was: [chess.dao.SaveParams.moveHistoryPlayer1#rrr] (uninitialized)
21:19:51,309 DEBUG Collections:198 - Collection found: [chess.dao.SaveParams.moveHistoryPlayer2#rrr], was: [chess.dao.SaveParams.moveHistoryPlayer2#rrr] (uninitialized)
21:19:51,309 DEBUG AbstractFlushingEventListener:108 - Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
21:19:51,317 DEBUG AbstractFlushingEventListener:114 - Flushed: 0 (re)creations, 0 updates, 0 removals to 4 collections
21:19:51,317 DEBUG Printer:106 - listing entities:
21:19:51,317 DEBUG Printer:113 - chess.dao.SaveParams{downPiecesList=<uninitialized>, boardMatrix=<uninitialized>, time=21000, moveHistoryPlayer2=<uninitialized>, moveHistoryPlayer1=<uninitialized>, chat=, namePlayer1=r1, serverName=rrr, piecesColorPlayer2=Black, piecesColorPlayer1=White, namePlayer2=dsfd}
21:19:51,319 DEBUG AbstractBatcher:410 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
21:19:51,319 DEBUG SQL:111 - update SaveParams set serverName = ? 
Hibernate: update SaveParams set serverName = ? 
21:19:51,320 DEBUG NativeSQLQueryPlan:159 - bindNamedParameters() rrr -> sName [1]
21:19:51,321 DEBUG AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
21:19:51,323 DEBUG JDBCExceptionReporter:225 - could not execute native bulk manipulation query [update SaveParams set serverName = :sName ]
java.sql.SQLException: Cannot delete or update a parent row: a foreign key constraint fails (`chessdb/boardmatrix`, CONSTRAINT `FK8E7A2E4759A95E5B` FOREIGN KEY (`serverName`) REFERENCES `saveparams` (`serverName`))
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
    at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1129)
    at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:681)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1368)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1283)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1268)
    at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:210)
    at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1310)
    at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:396)
    at chess.dao.ChessDao.saveGame(ChessDao.java:38)
    at chess.network.ChessGUINetwork_Controller.actionPerformed(ChessGUINetwork_Controller.java:67)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6290)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6055)
    at java.awt.Container.processEvent(Container.java:2039)
    at java.awt.Component.dispatchEventImpl(Component.java:4653)
    at java.awt.Container.dispatchEventImpl(Container.java:2097)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
    at java.awt.Container.dispatchEventImpl(Container.java:2083)
    at java.awt.Window.dispatchEventImpl(Window.java:2482)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:607)
    at java.awt.EventQueue$1.run(EventQueue.java:605)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:621)
    at java.awt.EventQueue$2.run(EventQueue.java:619)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
21:19:51,324  WARN JDBCExceptionReporter:233 - SQL Error: 1451, SQLState: 23000
21:19:51,324 ERROR JDBCExceptionReporter:234 - Cannot delete or update a parent row: a foreign key constraint fails (`chessdb/boardmatrix`, CONSTRAINT `FK8E7A2E4759A95E5B` FOREIGN KEY (`serverName`) REFERENCES `saveparams` (`serverName`))
Exception in thread "AWT-EventQueue-0" org.hibernate.exception.ConstraintViolationException: could not execute native bulk manipulation query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:219)
    at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1310)
    at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:396)
    at chess.dao.ChessDao.saveGame(ChessDao.java:38)
    at chess.network.ChessGUINetwork_Controller.actionPerformed(ChessGUINetwork_Controller.java:67)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6290)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6055)
    at java.awt.Container.processEvent(Container.java:2039)
    at java.awt.Component.dispatchEventImpl(Component.java:4653)
    at java.awt.Container.dispatchEventImpl(Container.java:2097)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
    at java.awt.Container.dispatchEventImpl(Container.java:2083)
    at java.awt.Window.dispatchEventImpl(Window.java:2482)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:607)
    at java.awt.EventQueue$1.run(EventQueue.java:605)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:621)
    at java.awt.EventQueue$2.run(EventQueue.java:619)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.sql.SQLException: Cannot delete or update a parent row: a foreign key constraint fails (`chessdb/boardmatrix`, CONSTRAINT `FK8E7A2E4759A95E5B` FOREIGN KEY (`serverName`) REFERENCES `saveparams` (`serverName`))
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
    at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1129)
    at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:681)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1368)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1283)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1268)
    at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:210)
    ... 40 more


PM MAIL   Вверх
Vasay
Дата 15.6.2012, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Killer_13

Цитата

Foreign key constraint fails - означает, что обновляя записи одной таблицы, Вы пытаетесь разорвать созданную командой «ADD CONSTRAINT» связь между её значениями и значениями в другой таблицы. MySQL не дает выполнить эту операцию и сообщит об ошибке  



п.с. а в чем смысл Ваших действий? Зачем Вы пытаетесь всем записям в таблице присвоить одинаковые serverName ? 

Потом, Вы создаете нативныей SQL запрос с помощью createSQLQuery. Зачем опять SQL?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 16.6.2012, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Дык я понимаю, что значит Foreign key.

Цитата(Vasay @  15.6.2012,  23:39 Найти цитируемый пост)
п.с. а в чем смысл Ваших действий? Зачем Вы пытаетесь всем записям в таблице присвоить одинаковые serverName ? 
 - в том и вопрос, мне нужно заменить существующий объект с именем "serverName", ну вот, я пытаюсь обновить объект более новыми данными...



Цитата(Vasay @  15.6.2012,  23:39 Найти цитируемый пост)
Потом, Вы создаете нативныей SQL запрос с помощью createSQLQuery. Зачем опять SQL? 
 - на счет этого загнался, должен быть session.createQuery - но все равно, я не могу обновить данные в таблицах.. :(

PM MAIL   Вверх
Vasay
Дата 16.6.2012, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  16.6.2012,  00:15 Найти цитируемый пост)
 - в том и вопрос, мне нужно заменить существующий объект с именем "serverName", ну вот, я пытаюсь обновить объект более новыми данными...


Один конкретный? Или сразу все в таблице?

Судя по запросу - Вы пытаетесь поменять все.
Если конкретный, то зачем вообще делать запрос. Измените нужное свойство объекта и сделайте session.flush()


Только вот Foreign key constraint fails возможно, все равно получите. Ведь у Вас по serverName связаны другие таблицы. Хотя, надо смотреть. Даже не знаю, как поведет себя тут Хибернейт. 

Это сообщение отредактировал(а) Vasay - 16.6.2012, 00:57


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 16.6.2012, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  16.6.2012,  00:56 Найти цитируемый пост)
Один конкретный? Или сразу все в таблице?
 - да, конкретный, тот у которого имя "serverName".
Цитата(Vasay @  16.6.2012,  00:56 Найти цитируемый пост)
Если конкретный, то зачем вообще делать запрос. Измените нужное свойство объекта и сделайте session.flush()
 - скорее всего это мне и нужно. smile 

PM MAIL   Вверх
Vasay
Дата 16.6.2012, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  16.6.2012,  01:16 Найти цитируемый пост)
 - да, конкретный, тот у которого имя "serverName".


Вопрос, а зачем Вы делаете serverName - id и связываете по нему Листы (т.е. другие таблицы), если это свойство у вас изменяемое?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 16.6.2012, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  16.6.2012,  01:37 Найти цитируемый пост)
Вопрос, а зачем Вы делаете serverName - id и связываете по нему Листы (т.е. другие таблицы), если это свойство у вас изменяемое? 
 - свойсво не изменяемое,  в данном случае - это первичный ключь, я смотрю, если таков существует, то заменить все поля которые связаны с этим ключем. Я хочу сделать простой update по заданному первичному ключу и все.

PM MAIL   Вверх
Vasay
Дата 16.6.2012, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



Цитата(Killer_13 @  16.6.2012,  01:40 Найти цитируемый пост)
- свойсво не изменяемое,  в данном случае - это первичный ключь, я смотрю, если таков существует, то заменить все поля которые связаны с этим ключем. Я хочу сделать простой update по заданному первичному ключу и все.


Но, судя по тому запросу, который Вы пытаетесь исполнить - Вы пытаетесь поменять именно serverName, причем сразу у всех записей в таблице   smile 

В Вашем случае, как мне кажется, будет уместен метод  saveOrUpdate() 
http://docs.jboss.org/hibernate/orm/3.3/re...te-saveorupdate


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Killer_13
Дата 16.6.2012, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Цитата(Vasay @  16.6.2012,  02:04 Найти цитируемый пост)
В Вашем случае, как мне кажется, будет уместен метод  saveOrUpdate() 
 В точку! 5 Балоффф,  smile  - а я мог бы и сам догадаться посмотреть какие еще методі есть в session, это ж интуитивно понятно.
Спасибо, вопрос решен, все работает так, как надо. smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0894 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.