相关疑难解决方法(0)

枚举的JPA地图集

在JPA中有一种方法可以在Entity类中映射枚举的集合吗?或者唯一的解决方案是使用另一个域类包装Enum并使用它来映射集合?

@Entity
public class Person {
    public enum InterestsEnum {Books, Sport, etc...  }
    //@???
    Collection<InterestsEnum> interests;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Hibernate JPA实现,但当然更喜欢实现不可知的解决方案.

java jpa java-ee

81
推荐指数
5
解决办法
6万
查看次数

Java枚举与创建位掩码和检查权限混淆

我想将这个c#权限模块移植到java,但是当我无法将数值保存在数据库中然后将其转换为枚举表示时,我很困惑.

在c#中,我创建了一个这样的枚举:

public enum ArticlePermission
{
     CanRead   = 1,
     CanWrite  = 2,
     CanDelete = 4,
     CanMove   = 16
}
Run Code Online (Sandbox Code Playgroud)

然后我可以创建一个权限集,如:

ArticlePermission johnsArticlePermission = ArticlePermission.CanRead | ArticlePermission.CanMove;
Run Code Online (Sandbox Code Playgroud)

然后我使用以下方法将其保存到数据库中

(int)johnsArticlePermission
Run Code Online (Sandbox Code Playgroud)

现在我可以将它作为整数/长整数从数据库中读出来,然后将其转换为:

johnsArticlePermission = (ArticlePermission) dr["articlePermissions"];
Run Code Online (Sandbox Code Playgroud)

我可以检查权限,如:

if(johnsArticlePermission & ArticlePermission.CanRead == ArticlePermission.CanRead) 
{

}
Run Code Online (Sandbox Code Playgroud)

我怎么能在java中这样做?根据我的理解,在java中,您可以将枚举转换为数值,然后将其转换回java枚举.

想法?

java permissions bit-manipulation

8
推荐指数
1
解决办法
9313
查看次数

正确使用位掩码?

heyhey,只是对bitmasks有疑问.我想我现在知道它们是什么以及它们可以在哪里使用.我想存储特定权限,如BUILD,BREAK和INTERACT,以及更多特定群组.下面的代码应该这样做但我不太确定这是否是正确的"风格".

这个想法是在这里使用前3位来存储第一组的权限,然后使用接下来的三位用于第二组,依此类推.所以现在我的问题是这是一种好方法还是更好的方法?

public class Test {
    private int permissions = 0;

    /**
     * The amount of permissions, currently: {@link #BREAK}, {@link #BUILD}, {@link #INTERACT}
     */
    private static final int PERMISSIONS = 3;
    /**
     * The different permissions
     */
    public static final int BUILD = 1, BREAK = 2, INTERACT = 4;
    /**
     * The different groups
     */
    public static final int ALLIANCE = 0, OUTSIDERS = 1;

    public void setPermissions(int permissions, int group)
    {
        this.permissions = permissions << group * …
Run Code Online (Sandbox Code Playgroud)

java bit-manipulation bitmask bit bitwise-operators

8
推荐指数
1
解决办法
1万
查看次数

Java枚举自动增量条目?

Java是否允许类似于好的C或甚至C#这样的意思,你可以定义一个枚举,其中的字段会自动增长,并从一个可选的给定值开始?

例如

在C或C#中:

enum Foo { A = 10, B, C, D = 5000, E, Fish };
Run Code Online (Sandbox Code Playgroud)

产率A = 10,B = 11,C = 12,D = 5000,E = 5001,鱼= 5002.

java enums

7
推荐指数
2
解决办法
5902
查看次数

Hibernate - 如何映射EnumSet

我有一个彩色枚举

public enum color { GREEN, WHITE, RED } 
Run Code Online (Sandbox Code Playgroud)

我有包含它的MyEntity.

public class MyEntity {
   private Set<Color> colors;
   ...
Run Code Online (Sandbox Code Playgroud)

我已经有一个UserType来映射我的枚举.
你知道如何在Hibernate hbm.xml中映射一组枚举吗?
我需要UserType还是最简单的方法?
谢谢

编辑:请注意,我正在寻找hbm.xml配置而不是@CollectionOfElements Annotation

java orm enums hibernate set

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

如何在Scala 2.8中获取枚举集的Long/Int值

在Scala 2.7中,Enumeration提供Set32/Set64来构建枚举集,并轻松获取Long/Int中的按位值,或者从Long/Int值(简化数据库存储)中构建枚举值.Scala 2.8删除了这些类.2.8 lib中有替代品吗?

enumeration scala

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

坚持一周的一天

我正在寻找一种有效的方法来坚持一周的日子.换句话说,用户将从工作日列表中选择任意天数.具体日期无关紧要,只是一周中的某一天.我需要将这一天存储在一个休眠实体中.

我可以存储其中一个:

Set<DayOfWeek>
Set<Integer>
Run Code Online (Sandbox Code Playgroud)

但我认为它可能比这更简单.如果我只使用单个int来存储数据并使用按位运算,该怎么办?例如:

Sun = 1
Mon = 2
Tue = 4
Wed = 8
Thu = 16
Fri = 32
Sat = 64
Run Code Online (Sandbox Code Playgroud)

因此,为了表示太阳,周一,周三,周六的集合,我将保持整数75.这是因为1 + 2 + 8 + 64 = 75.

我担心的是对这样的字段执行查询.我能找到所有选择了Wed的实体吗?

这看起来像是一个好方法吗?有没有人有更好的主意?

谢谢!

java hibernate bit-manipulation

3
推荐指数
1
解决办法
3570
查看次数