hibernate hql语句怎么获取枚举类型

hibernate hql语句怎么获取枚举类型,第1张

查看API文档知:返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)

//解释上面红色一行的意思:即:我下面的方法public List<OrderProductEntity> queryByStatus(String status) 这里传过来的字符串必须与枚举重对象一致,不然找不到该枚举类型。

import comeceecentityapiStringValuedEnum;

public enum OrderStatus implements StringValuedEnum {

CREATED("新订单"), APPROVED("确认")

,DEPOSIT("定金已付"),PAID("付清")

CANCELLED("取消");

//对这个枚举说明一下CREATED是枚举对象 新订单是CREATED枚举对象的值

//Systemoutprintln(OrderStatus CREATED); 输出的结果是CREATED 而不是CREATED("新订单")

// Systemoutprintln(OrderStatus CREATEDgetValue()); 输出的结果是 新订单

private String value;

OrderStatus(String value) {

thisvalue = value;

}

@Override

public String getValue() {

return value;

}

}

//String status假设传递过来的是CREATED

public List<OrderProductEntity> queryByStatus(String status) {

OrderStatus statu = EnumvalueOf(OrderStatusclass, status); //根据传过来的字符串CREATED 找到OrderStatus statu枚举

String hql ="from OrderProductEntity op where opstatus=";

List<OrderProductEntity> lst = getHibernateTemplate()find(hql, statu); //将找到的枚举statu 传到hql语句中

getHibernateTemplate()flush();

getHibernateTemplate()clear();

return lst;

}

声明一个方向的枚举,包含四个枚举值: 东/西/南/北

Swift 的枚举成员在被创建时本身就是完备的值,这些值的类型是已经明确定义好的 Direction 类型 不会像 Objective-C 一样被赋予一个默认的整型值。在上面的 Direction 例子中,east、west 、north、south不会被隐式地赋值为 0,1,2 和 3。

Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为原始值),则该值的类型可以是:字符串、字符、任意的整数值或浮点类型。

Swift的枚举类型提供了一个叫原始值(RawValues)的实现,它为枚举项提供了一个默认值,这个默认值在编译期间就是确定的。

通过原值值获取的枚举项是可选类型的,所以需要用if let 做一下判断。

未指定枚举值类型

隐式原始值

隐式原始值下枚举项使用系统的分配值:

显式原始值

隐式 + 显式原始值

这里使用了属性观察者,Swift里面的枚举更像一个对象,因此可以很方便的使用属性观察者对枚举值进行监听。

在 Swift 中,还可以定义这样的枚举类型,它的每一个枚举项都有一个附加信息,来扩充这个枚举项的信息表示,这又叫做关联值。

一定要学会使用关联值,这一点很重要。具体的使用后面的第九节会细说

通常情况下枚举是很容易进行相等判断的。一旦为枚举增加了关联值,Swift就没法正确的比较了,需要自己对该枚举实现 == 运算符。

借助 Comparable 协议,来实现枚举的比较。

遵守 CaseIterable 协议的swift枚举是可以遍历的,通过allCases获取所有的枚举成员

app里面的接口地址,如果都放一起,命名或者寻找都不方便,可以用枚举的嵌套来设计。可以分散在多个文件中,方便维护和管理。

用枚举来管理系统里面的常量是一个不错的选择。

枚举中不能使用存储属性,但是可以使用计算属性,计算属性的内容是在枚举值或者枚举关联值中得到的。

在这里,可以认为枚举是一个类,introduced是一个成员方法,AppleDeivceiPhone 就是一个AppleDeivce的实例,case们是它的属性。introduced里面的switch self,其实就是遍历这个匿名属性的所有场景,如iPad,iPhone等,然后根据不同的场景返回不同的值。

可以做枚举的自定义构造方法。

系统的打印协议

让枚举遵守这个协议

枚举可以进行扩展。可以将枚举中的case与method/protocol分隔开,阅读者可以快速消化枚举的内容。

设计一个网络类下的错误信息的处理功能。

在项目中经常使用 UserDefaults 来存储一下简单的用户信息。但是对 Key 的维护不会很方便。而且会想不起来。用枚举+结构体就能很好的解决这个问题。

这么设计APP的存储模块,是不是更有层级感,更加方便使用呢?

递归枚举是拥有另一个枚举作为枚举成员关联值的枚举。当编译器 *** 作递归枚举时必须插入间接寻址层。可以在声明枚举成员之前使用 indirect关键字来明确它是递归的。 也可以声明在整个枚举前,让所有的枚举成员都是递归的。

你是说更改枚举变量项对应的数值?你先要弄明白什么是枚举类型。

LabVIEW中,枚举可以看作是“下拉列表”的特例:各项值使用的是0开始的有序序号值、枚举用格式化写入字符串函数处理后直接得到当前项的字符串。

你如果真的需要改值,可以换用各种下拉列表控件。

你没描述清楚,数量和数值可不是一回事,下图是我根据你数量的说法,最开始的错误理解。

1enum

枚举的定义

枚举类型定义的一般形式为:

enum 枚举名{ 枚举值表 };

在枚举值表中应罗列出所有可用值。这些值也称为枚举元素

例如:

该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

2

枚举变量的说明

如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

enum weekday{ sun,mou,tue,wed,thu,fri,sat };

enum weekday a,b,c;

或者为:

enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者为:

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

3、枚举类型变量的赋值和使用

枚举类型在使用中有以下规定:

a

枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

例如对枚举weekday的元素再作以下赋值:

sun=5;

mon=2;

sun=mon;

都是错误的。

b

枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。

int main(){

enum weekday

{ sun,mon,tue,wed,thu,fri,sat } a,b,c;

a=sun;

b=mon;

c=tue;

printf("%d,%d,%d",a,b,c);

return 0;

}

说明:

只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:

a=sum;

b=mon;

是正确的。而:

a=0;

b=1;

是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。

如:a=(enum

weekday)2;

其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:

a=tue;

还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

int main(){

enum body

{ a,b,c,d } month[31],j;

int i;

j=a;

for(i=1;i<=30;i++){

month[i]=j;

j++;

if (j>d) j=a;

}

for(i=1;i<=30;i++){

switch(month[i])

{

case a:printf(" %2d %c\t",i,'a'); break;

case b:printf(" %2d %c\t",i,'b'); break;

case c:printf(" %2d %c\t",i,'c'); break;

case d:printf(" %2d %c\t",i,'d'); break;

default:break;

}

}

printf("\n");

return 0;

}

在C#中能够使用foreach语句遍历数组和List等对象的原因就在于这些对象是可枚举类型,这些可枚举类型能够获取枚举器,而枚举器能够自动获取对象中的每一个元素。

什么是可枚举类型?

实现了IEnumerable中的GetEnumerator方法的类型就是可枚举类型,从方法名字中就可以知道,用于获取枚举器,枚举器包含集合中的元素信息。

什么是枚举器?

实现了IEnumerator接口就是枚举器,可以依次返回集合中的元素,该接口有一个属性和两个方法:

Current ,这是一个只读的object类型属性,可以返回任何类型,用于获取集合中的当前元素。

MoveNext ,这是一个方法,用于将枚举数推进到集合的下一个元素,如果已是最后一项则返回false。

Reset ,这是一个方法,将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。

如果自定义类实现了可枚举类型接口和枚举器接口,便可以使用foreach语句进行遍历了。

实现可枚举类型

实现枚举器

使用foreach语句进行遍历

以上使用的枚举类型接口和枚举器接口都是非泛型版本,在C#使用较多的是泛型版本的IEnumerable<T>和IEnumerator<T>,使用方法差不多,但有一些区别。

以上就是关于hibernate hql语句怎么获取枚举类型全部的内容,包括:hibernate hql语句怎么获取枚举类型、Swift-细说枚举(Enum)、在labview里如何根据自己设定的数来改变枚举菜单编辑项里项的数量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9613080.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存