当我的列名包含连字符" - "时,我收到异常
Entity : this is the entity name.
@Entity
@Table(name = "RequestHeader")
public class RequestHeader implements Serializable {
....
....
@Column(name = "`oh-ordnbr`")
private Integer ohOrdnbr;
Run Code Online (Sandbox Code Playgroud)
架构定义:这是架构创建的查询.
CREATE MEMORY TABLE PUB.REQUESTHEADER(
REQUESTID INTEGER,
IMUSERID INTEGER,
REQUESTDATE DATE,
REQUESTTIME INTEGER,
REQUESTSTATUS VARCHAR(19),
REQUESTTYPE VARCHAR(22),
HEADERINSTRUCTIONS VARCHAR(5150),
DATEFORMAT VARCHAR(20),
TIMEFORMAT VARCHAR(20),
LANGUAGEID INTEGER,
"OH-ORDNBR" INTEGER,
"OH-TRCNSTAMP" INTEGER,
ISPICKUPLIST BIT(1),
CONSTRAINT "RQH-1" PRIMARY KEY(REQUESTID)
);
Run Code Online (Sandbox Code Playgroud)
错误如下:
Exception Stack: Error message which I have received by running the Junit.
Caused by: org.hsqldb.HsqlException: …Run Code Online (Sandbox Code Playgroud) 扩展到这篇博文,我试图使用一个类别来创建一个简单的DSL,用于javax.measure(JSR-275)类(类似于TimeCategory的时间间隔)
但是,我不想为每个可能的可用方法(getMeter,getMilliMeter,getKelvin,getSecond等)添加样板代码.我认为重写该getProperty(String)方法会起作用,但唉,看起来getProperty直接访问属性时不使用该类别中定义的方法.
这是一些简化的代码来演示:import javax.measure.quantity.Length; import javax.measure.unit.Unit; import javax.measure.Measure;
@Category(Number)
class LengthCategory {
public Measure<BigDecimal, Length> getProperty(String unit){
return Measure.valueOf(this,Unit.valueOf(unit));
}
}
use(LengthCategory){
println 3.getProperty("m") // this works
println 3.m // this reports a non-exisiting property
prinlln 3.'m' // as does this
}
Run Code Online (Sandbox Code Playgroud)
假设动态地向运行时对象添加属性的其他方法(例如Expando,子类化GroovyInterceptible,混合和其他元类操作)是不可行的,我真的不必为每个可能的单元和SI前缀组合手动编写getter.显然还有其他方法可以为测量创建DSL,但我仍然想了解为什么这种方法不起作用.
有人可以解释为什么getProperty类别的方法不会覆盖.propertyName使用?我显然遗漏了在运行时使用元类解析属性名称的重要事项.