小编Ada*_*ard的帖子

使用AspectJ将一个注释转换为多个注释

我在我的JPA映射中发现了一种我想编写的模式.一个简单的例子如下:

@OneToMany(fetch=FetchType.EAGER)
@Sort(type=SortType.NATURAL)
private SortedSet<Item> items;
Run Code Online (Sandbox Code Playgroud)

我想创建一个名为SortedOneToMany的注释,我可以应用于上面的集合:

public @interface SortedOneToMany {
    FetchType fetch() default EAGER;
    SortType sort() default NATURAL;
    Class comparator() default void.class;
}
Run Code Online (Sandbox Code Playgroud)

我写了以下方面,以便在看到我的注释时"附加"JPA注释:

public aspect SortedOneToManyAspect {
    declare @field: @SortedOneToMany * * : @OneToMany(fetch=FetchType.EAGER);
    declare @field: @SortedOneToMany * * : @Sort(type=SortType.NATURAL);
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何访问SortedOneToMany注释参数的值并在定义OneToMany和Sort注释时使用它们.在某些情况下,我想更改其中一个默认值,如下所示:

@SortedOneToMany(sort=SortType.COMPARATOR,comparator=ItemComparator.class)
private SortedSet<Item> items;
Run Code Online (Sandbox Code Playgroud)

那么如何将SortedOneToMany中的注释值传递给Sort注释呢?

java annotations aspectj

7
推荐指数
1
解决办法
799
查看次数

将两个向量限制在同一个域中但不是彼此的成员

我已经使用 clojure 一段时间了,但刚开始使用 core.logic。

给定一个域,比如1 2 3 4我想得到一个包含两个向量的向量,比如([[1 2] [3 4]]).

注意:这只是我真正想做的事情的简化版本。:) 见:https : //github.com/adamhoward/lineup

我在网上找到了非会员的这个定义:

(defne not-membero [x l]
  ([_ []])
  ([_ [?y . ?r]]
    (!= x ?y)
    (not-membero x ?r)))
Run Code Online (Sandbox Code Playgroud)

我正在尝试像这样使用它:

(run 1 [q]
     (fresh [w x
             y z]
            (== q [[w x]
                   [y z]])
            (infd w x y z (domain 1 2 3 4))
            (everyg distinctfd [[w x] [y z]])
            (everyg #(not-membero % [y z]) [w x])))
Run Code Online (Sandbox Code Playgroud)

在 Emacs 中运行它会给我一条Evaluation aborted. …

clojure clojure-core.logic

5
推荐指数
1
解决办法
492
查看次数

标签 统计

annotations ×1

aspectj ×1

clojure ×1

clojure-core.logic ×1

java ×1