繁体   English   中英

Ebean和PlayFramework的复合键

[英]Compound key with Ebean and PlayFramework

我已经在MySQL中创建了复合键。 该表为ActionNoteCode ,复合键由字段action_note_codecollection 在ebean和play框架的复合键上遵循了该示例。

该类的ActionNoteCode代码:

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

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

当Play开始播放时,会引发以下错误:

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

这表明您正在使用models文件夹/软件包:

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)

1-尝试使您的类成为静态的, public static class ActionNoteCodeIndex

2-如果它不起作用,请将您的ActionNoteCodeIndexActionNoteCodeIndex到单独的文件中。 我想这确实有所作为,因为ebean扫描文件以使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM