最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

java - Blaze subView with constructor - Stack Overflow

programmeradmin2浏览0评论

Is this possible to create subView over @Mapping("this") with constructor? Let's say I have such View:

@EntityView(Validation.class)
public interface ValidationView extends IValidation {
    @Override
    @Mapping("this")
    TimePeriodForValidation getPeriod();

    @EntityView(Validation.class)
    abstract class TimePeriodForValidation extends TimePeriodView {
        public TimePeriodForValidation(
                @Mapping("startTime") LocalDateTime startTime,
                @Mapping("endTime") LocalDateTime endTime
        ) {
            super(startTime, endTime);
        }
    }
}

With com.blazebit:blaze-persistence-integration-quarkus-3 it gives me a RuntimeException: "Probably we did something wrong, please contact us if you see this message." which is caused by compile error (at runtime), when it tries to call constructor of TimePeriodForValidation with strange paramters: TimePeriodForValidation_$$javassist_entityview and Map. TimePeriodForValidation_$$javassist_entityview is probably derived from TimePeriodForValidation

NB. startTime and endTime are fields of Validation.class

Does anybody know why does this happen? Seems like it only happens when ConstructorKind is ProxyFactory.ConstructorKind.CREATE

I've created issue on Github

Is this possible to create subView over @Mapping("this") with constructor? Let's say I have such View:

@EntityView(Validation.class)
public interface ValidationView extends IValidation {
    @Override
    @Mapping("this")
    TimePeriodForValidation getPeriod();

    @EntityView(Validation.class)
    abstract class TimePeriodForValidation extends TimePeriodView {
        public TimePeriodForValidation(
                @Mapping("startTime") LocalDateTime startTime,
                @Mapping("endTime") LocalDateTime endTime
        ) {
            super(startTime, endTime);
        }
    }
}

With com.blazebit:blaze-persistence-integration-quarkus-3 it gives me a RuntimeException: "Probably we did something wrong, please contact us if you see this message." which is caused by compile error (at runtime), when it tries to call constructor of TimePeriodForValidation with strange paramters: TimePeriodForValidation_$$javassist_entityview and Map. TimePeriodForValidation_$$javassist_entityview is probably derived from TimePeriodForValidation

NB. startTime and endTime are fields of Validation.class

Does anybody know why does this happen? Seems like it only happens when ConstructorKind is ProxyFactory.ConstructorKind.CREATE

I've created issue on Github

Share Improve this question edited Feb 11 at 12:11 Anton Astafiev asked Feb 10 at 20:03 Anton AstafievAnton Astafiev 1267 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

It would be great if you could create a bug report on the GitHub issues list for this error, as I don't think this should happen. Having said that, you should be able to workaround the problem by defining a named constructor e.g. create with no arguments, like this:

@ViewConstructor("create")
public TimePeriodForValidation() {
    super(null, null);
}
发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>