2017-04-03 44 views
0

我在MySQL中創建了一個複合鍵。該表是ActionNoteCode,複合密鑰由字段action_note_codecollection組成。我遵循compound key in ebean and play framework的例子。Ebean和PlayFramework的複合鍵

ActionNoteCode代碼:

@Entity 
public class ActionNoteCode extends Model { 
    @EmbeddedId 
    public ActionNoteCodeIndex id; 
    String description = ""; 

    @Embeddable 
    class ActionNoteCodeIndex { 
     String acvtion_note_code; 
     String collection; 
    } 
} 

當比賽開始它會引發以下錯誤:

Cannot register class [models.prospector.actionNote.ActionNoteCode$ActionNoteCodeIndex] in Ebean server 

這說明你正在使用的模型文件夾/包:

ebean.default="models.*" 

以下是完整的堆棧跟蹤:

play.api.Configuration$$anon$1: Configuration error[Cannot register class [models.prospector.actionNote.ActionNoteCode$ActionNoteCodeIndex] in Ebean server] 
    at play.api.Configuration$.configError(Configuration.scala:156) 
    at play.api.Configuration.reportError(Configuration.scala:809) 
    at play.Configuration.reportError(Configuration.java:368) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.addModelClassesToServerConfig(DefaultEbeanConfig.java:107) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.parse(DefaultEbeanConfig.java:82) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.get(DefaultEbeanConfig.java:56) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.get(DefaultEbeanConfig.java:40) 
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) 
    at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72) 
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) 
Caused by: java.lang.VerifyError: Bad type on operand stack 
Exception Details: 
Location: 
models/prospector/actionNote/ActionNoteCode$ActionNoteCodeIndex.<init>(Lmodels/prospector/actionNote/ActionNoteCode;)V @2: invokevirtual 
Reason: 
    Type uninitializedThis (current frame, stack[0]) is not assignable to 'models/prospector/actionNote/ActionNoteCode$ActionNoteCodeIndex' 
Current Frame: 
bci: @2 
flags: { flagThisUninit } 
locals: { uninitializedThis, 'models/prospector/actionNote/ActionNoteCode' } 
stack: { uninitializedThis, 'models/prospector/actionNote/ActionNoteCode' } 
Bytecode: 
0x0000000: 2a2b b600 202a b700 232a bb00 2559 2ab7 
0x0000010: 0028 b500 2ab1       
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:348) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.addModelClassesToServerConfig(DefaultEbeanConfig.java:105) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.parse(DefaultEbeanConfig.java:82) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.get(DefaultEbeanConfig.java:56) 
    at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.get(DefaultEbeanConfig.java:40) 
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) 
    at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72) 
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) 
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62) 
+0

這裏是完整的堆棧跟蹤.. – Chet

+0

試着讓你的類靜態,'public static class ActionNoteCodeIndex' – pedroct92

回答

0

1-嘗試使您的課程變爲靜態,public static class ActionNoteCodeIndex

2 - 如果不起作用,請將您的課程ActionNoteCodeIndex移至單獨的文件。我想它確實有所作爲,因爲ebean會掃描這些文件以便使用它們。