2017-06-12 35 views
0

我有另一個問題(似乎是相同的事情:stored procedure 'auto_pk_for_table' not found)但我把自動增量和唯一索引的ID和'數據庫生成「在我的自動遞增字段主鍵,請參見:錯誤table.auto_pk_support當我嘗試在我的表中保存一個值

public abstract class _DateInfo extends CayenneDataObject { 

    public static final String ENDDATETIME_PROPERTY = "enddatetime"; 
    public static final String STARTDATETIME_PROPERTY = "startdatetime"; 
    public static final String USER_ID_PROPERTY = "userId"; 

    public static final String DATEINFOID_PK_COLUMN = "DATEINFOID"; 
    public static final String USERID_PK_COLUMN = "USERID"; 

    public void setEnddatetime(Date enddatetime) { 
     writeProperty(ENDDATETIME_PROPERTY, enddatetime); 
    } 
    public Date getEnddatetime() { 
     return (Date)readProperty(ENDDATETIME_PROPERTY); 
    } 

    public void setStartdatetime(Date startdatetime) { 
     writeProperty(STARTDATETIME_PROPERTY, startdatetime); 
    } 
    public Date getStartdatetime() { 
     return (Date)readProperty(STARTDATETIME_PROPERTY); 
    } 

    public void setUserId(int userId) { 
     writeProperty(USER_ID_PROPERTY, userId); 
    } 
    public int getUserId() { 
     Object value = readProperty(USER_ID_PROPERTY); 
     return (value != null) ? (Integer) value : 0; 
    } 
} 

我試圖挽救當地的時間,當我點擊保存按鈕:

Button save = new Button("Save", event -> { 
    DateInfoFactory date = CayenneUtil.getContext().newObject(
      DateInfoFactory.class); 

     date.setUserId(userIdSelected); 
     if (startTime.getValue() != null) { 
      LocalTime startDate = startTime.getValue(); 
      date.setStartdatetime(toDate(startDate)); 
     } 

     date.getObjectContext().commitChanges(); 

    }); 
    save.addStyleName(ValoTheme.BUTTON_PRIMARY); 

但後來,我收到此錯誤:

juin 12, 2017 9:38:32 PM org.apache.cayenne.log.CommonsJdbcEventLogger logQuery 
INFOS: LOCK TABLES AUTO_PK_SUPPORT WRITE 
juin 12, 2017 9:38:32 PM org.apache.cayenne.log.CommonsJdbcEventLogger logQuery 
INFOS: UNLOCK TABLES 
juin 12, 2017 9:38:32 PM com.vaadin.server.DefaultErrorHandler doDefault 
GRAVE: 
org.apache.cayenne.CayenneRuntimeException: [v.4.0.M5 Feb 24 2017 07:47:55] Commit Exception 
.. 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mam.auto_pk_support' doesn't exist 

我在MySQL表爲:enter image description here

我該怎麼辦?

謝謝,

+0

'Table'mam.auto_pk_support'does not exist' - 檢查您定義表名的位置。看起來是不正確的。 – petey

+0

一切都設置在卡宴和表名似乎很好。 mam是我的架構,datainfo是我的表名 – Bob

回答

1

可以有幾個選項如何修復您的代碼。

  1. 你有複合PK(dateinfoid + userid)是這個目的? 也許你應該使用單列PK(即只有dateinfoid),因爲它可以唯一標識你的案例中的對象,並且可能會使你免於其他麻煩。

  2. 如果化合物的PK是故意的,那麼要確保在userIdSelected提供非零值或以其他方式卡宴將嘗試通過auto_pk_support表來提供。

+0

是的,它是故意的,我不確定要理解,我想設置一個用戶ID並設置userIdSelected(這是一個Java變量),所以它不在卡宴。 userId已經是PK和非null。我應該如何提供非零值? – Bob

+0

我在我的用戶表和卡宴的日期表之間有一個關係(使用兩個表中的用戶標識) – Bob

+1

如果你想在表之間建立關係,你應該使用外鍵而不是主鍵,所以我認爲用戶標識不應該是零件的PK。而且你應該在Cayenne中使用Db \ ObjRelatioships,這將允許你使用Java對象將對象綁定在一起,而不是它們的ID。 至於非零值 - 你確定你在'userIdSelected'中提供的值不等於0嗎? 您可以閱讀如何在Cayenne中創建關係[here](http://cayenne.apache.org/docs/4.0/tutorial/getting-started-part2.html#d0e202) – Nikita

相關問題