我正在尝试使用Circumflex ORM(在StackOverflow上建议 - 这里,这里和这里)通过JDBC从Scala项目(使用简单的构建工具构建)连接到本地(嵌入式)Apache Derby数据库.我仔细按照说明操作,但我遇到了一些有趣的问题.
这是cx.properties文件的驱动程序和URL组件:
orm.connection.driver=org.apache.derby.jdbc.EmbeddedDriver
orm.connection.url=jdbc:derby:derbyDB
Run Code Online (Sandbox Code Playgroud)
(这些映射到"反射驱动程序的实例创建和创建连接"模型与原始JDBC或persistence.xml中的等价物 - Circumflex使用一个简短而又甜蜜的属性文件,因为,你知道,它不是XML,这是一个很好的事情.)
我在sbt项目文件中添加的直接相关的依赖项是:
"ru.circumflex" % "circumflex-orm" % "1.0",
"org.apache.derby" % "derby" % "10.6.1.0"
Run Code Online (Sandbox Code Playgroud)
我创建了一个简短的示例模型,它定义了文档描述的表的简化版本:
import java.sql.DriverManager
import ru.circumflex.orm._
class Country extends Record[Country] {
val code = "code" VARCHAR(2)
val name = "name" TEXT
}
object Country extends Table[Country]
Run Code Online (Sandbox Code Playgroud)
这似乎编译好了,我可以实例化Country对象(使用sbt控制台调用的Scala 2.8.0 RC5 shell)并创建一个ActiveRecord对象样式,然后像这样保存:
val c = new Country
c.code := "US"
c.name := "United States of America"
c.save
Run Code Online (Sandbox Code Playgroud)
根据文档,这应该对对象运行验证,然后将其插入数据库.我得到以下异常:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "public" at …
Run Code Online (Sandbox Code Playgroud) 好的,我的 datagridview 中的第一列是一个复选框。我已将“多选”设置为 true,这确实有效。但是,用户一次只能选中一个复选框,如果他们选择另一个复选框,原始复选框本身会取消选中,我该如何停止?我需要用户能够使用复选框选择 5 行中的 3 行,以便他们可以执行组操作。
谢谢,R。
如果我有一个托管 bean,如下所示:
@ManagedBean
@RequestSchoped
public class Example {
private List<String> stringList;
private List<Long> longList;
// getters, setters, etc. down here
}
Run Code Online (Sandbox Code Playgroud)
并且有一个接受 List 作为属性的自定义组件:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:h="http://java.sun.com/jsf/html">
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="aList" type="java.util.List" />
</cc:interface>
<cc:implementation>
<!-- code is in here -->
</cc:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
我怎么能确保这有效:
<myComp:previousComponent aList="#{example.stringList}" />
Run Code Online (Sandbox Code Playgroud)
但这没有:
<myComp:previousComponent aList="#{example.longList}" />
Run Code Online (Sandbox Code Playgroud)
换句话说,我想做的事情cc:attribute
如下:
<cc:attribute name="aList" type="java.util.List<java.lang.String>" />
Run Code Online (Sandbox Code Playgroud)
然而,正如我们所知,xhtml 不喜欢使用 > 或 <。此外,由于仅在编译时检查泛型,我不确定这将如何完成。有谁知道这是否可能?
这是失败的:
List<String> names = new ArrayList<String>();
names.add("sold");
Query query = em.createQuery("FROM PropField propField WHERE propField.name IN (?)");
query.setParameter(1, names);
List<PropField> fields = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
这是这样的:
List<String> names = new ArrayList<String>();
names.add("sold");
Query query = em.createQuery("FROM PropField propField WHERE propField.name IN (?)");
query.setParameter(1, names.toArray());
List<PropField> fields = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
这个也是:
List<String> names = new ArrayList<String>();
names.add("sold");
Query query = em.createQuery("FROM PropField propField WHERE propField.name IN ?");
query.setParameter(1, names.toArray());
List<PropField> fields = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
以及其他每一种排列.检查了文档,它说第一个选项应该有效.这是最好的例外.
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
at org.hibernate.type.StringType.toString(StringType.java:67)
Run Code Online (Sandbox Code Playgroud)
Hibernate的HQL使用 …
这是我的假设例子.我有一个非常简单的WPF窗口,带有一个Button.Button.Click事件有一个像这样的处理程序.
Action doit = () =>
{
Action error = () => { throw new InvalidOperationException("test"); };
try {
this.Dispatcher.Invoke(error, DispatcherPriority.Normal);
} catch (Exception ex) {
System.Diagnostics.Trace.WriteLine(ex);
throw;
}
};
doit.BeginInvoke(null, null);
Run Code Online (Sandbox Code Playgroud)
我希望通过Trace.WriteLine
调用捕获并记下异常.相反,没有捕获异常并且应用程序中断.
有人知道可能的解释吗?为了捕获被调用的委托抛出的异常,您建议使用哪种解决方法Dispatcher.Invoke
?
更新1:我throw
在异常处理代码中添加了一个.我不想实际忽略该异常.我的问题的重点是正确处理它.问题是永远不会执行异常处理代码.
请记住,这是一个假设的例子.我的真实代码看起来不像那样.另外,假设我无法更改要调用的方法中的代码.
更新2:考虑这个类似的例子.我有一个Windows窗体窗口而不是WPF窗口.它有一个按钮,几乎完全相同的处理程序.唯一的区别在于调用代码.它是这样的.
this.Invoke(error);
Run Code Online (Sandbox Code Playgroud)
在Windows窗体中,执行异常处理代码.为什么不同?
如何定义词法分析器和解析器(例如: flex和bison)的工作集来支持C++ 0x样式的原始字符串文字?
您可能已经知道,C++ 0x中的新字符串文字可以非常灵活的方式表达.
R"<delim>...<delim>";
- 在这段代码中,<delim>
几乎可以说是一切,也不需要转义字符.
可以使用任何类型的括号来分隔字符串的结尾:
R"(I love those who yearn for the impossible. (Von Goethe, "Faust"))";
可以使用相同字符的相同出现次数来简单地定义文本块:
R";***************************(
; TINY BASIC FOR INTEL 8080
; VERSION 2.0
; BY LI-CHEN WANG
; MODIFIED AND TRANSLATED
; TO INTEL MNEMONICS
; BY ROGER RAUSKOLB
; 10 OCTOBER, 1976
; @COPYLEFT
; ALL WRONGS RESERVED )
;***************************";
Run Code Online (Sandbox Code Playgroud)
我想用我正在开发的语言中使用这个奇妙的功能.
那么,我如何定义一个合适的标记器和语法分析器来实现结果呢?
提前感谢您的回答!
我有一个类型,有大约40个属性(所有值类型),代表我的业务的一种交易.此类的实例对应于我的数据库中的一行.我想保持我的类不可变,因为它只会用于读取操作,但我不知道如何在初始化期间设置40个属性.
通常我对不可变类型使用构造函数初始化,但我想避免编写带有40个参数的构造函数.我的房产的安装人员目前是私人的,但我愿意以足够的理由改变.是否有一种常见的方法来处理这种情况或更好的方法来解决问题?
我以前见过这个问题,但我不知道如何解决它.
说我有:
class Notification < ActiveRecord::Base
scope :current_notifications, where("starts_at <= ?", Time.now).where("ends_at >= ?", Time.now).limit(1)
end
Run Code Online (Sandbox Code Playgroud)
所以范围是从服务器启动的时间开始计算的,有关如何修复这样的实例的任何想法?