AbstractEntityMetaProvider.java 文件源码

java
阅读 39 收藏 0 点赞 0 评论 0

项目:katharsis-framework 作者:
private void setKey(T meta) {
    if (meta.getPrimaryKey() == null) {
        boolean generated = false;
        ArrayList<MetaAttribute> pkElements = new ArrayList<>();
        for (MetaAttribute attr : meta.getAttributes()) {
            if (attr.getAnnotation(Id.class) != null || attr.getAnnotation(EmbeddedId.class) != null) {
                pkElements.add(attr);

                boolean attrGenerated = attr.getAnnotation(GeneratedValue.class) != null;
                if (pkElements.size() == 1) {
                    generated = attrGenerated;
                } else if (generated != attrGenerated) {
                    throw new IllegalStateException(
                            "cannot mix generated and not-generated primary key elements for " + meta.getId());
                }
            }
        }
        if (!pkElements.isEmpty()) {
            MetaPrimaryKey primaryKey = new MetaPrimaryKey();
            primaryKey.setName(meta.getName() + "$primaryKey");
            primaryKey.setElements(pkElements);
            primaryKey.setUnique(true);
            primaryKey.setParent(meta, true);
            primaryKey.setGenerated(generated);
            meta.setPrimaryKey(primaryKey);
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号