在过去的几年里,我一直主要使用Oracle,并且习惯于将单字符varchar列用作布尔值.
我也可以看到(每个堆栈溢出答案),MySQL的建议类型是TINYINT.
现在我接受了我的小方案项目 - 使用DerbyDB,它支持BOOLEAN列,但直到10版左右才开始.
所以,问题是,为什么在设计关系数据库时合并BOOLEAN列如此困难?我是否遗漏了某些内容,或者它只是将待办事项列表推到了不重要的位置,因为您可以同时使用其他列类型?
我正在尝试扩展我的库以进行集成Swing,JPA并将JPA配置设置为可自动(和可移植),这意味着以编程方式添加<class>元素.(我知道它可以通过Hibernate AnnotationConfiguration或EclipseLInk 完成ServerSession,但是 - 可移植性).我也想避免Spring仅仅为了这个目的而使用.
我可以动态创建persistence.xml,并使用<class>指定包中的元素(通过Reflections库)填充它.当我尝试将此persistence.xml提供给JPA提供程序时,问题就开始了.我能想到的唯一方法是设置一个URLClassLoader,但是我想不出一种方法,首先不会让我把文件写到磁盘上,因为它有能力获得有效的URL.设置套接字通过URL(localhost:xxxx)服务文件似乎......我不知道,邪恶?
有谁知道如何解决这个问题?我知道避免使用一个库听起来很多工作,但我只想知道它是否可以完成.
编辑(尝试更清楚):
动态生成XML保存在String对象中.我不知道如何使它可用于持久性提供程序.另外,我想避免将文件写入磁盘.
出于我的问题的目的,持久性提供程序只是一个扫描类路径的类META-INF/persistence.xml.可以使一些实现接受动态创建XML,但是没有通用接口(特别是对于文件的关键部分,<class>标签).
我的想法是建立一个习俗ClassLoader- 如果你有任何其他的我会感激,我不会在这个上面.
我能找到的唯一容易扩展/可配置的是a URLClassLoader.它适用于URL对象,我不知道是否可以创建一个没有实际首先将XML写入磁盘.
这就是我正在设置的方式,但它是通过写入persistenceXmlFile = new File("META-INF/persistence.xml")磁盘来实现的:
Thread.currentThread().setContextClassLoader(
new URLResourceClassLoader(
new URL[] { persistenceXmlFile.toURI().toURL() },
Thread.currentThread().getContextClassLoader()
) …Run Code Online (Sandbox Code Playgroud) 这就是问题:用户会看到一个文本字段,可以输入过滤器.过滤器,用于过滤未过滤的数据.遇到Oracle Forms洗脑的用户除了%之外没有任何特殊字符,我想这或多或少代表Java中的".*"正则表达式.
如果用户表现良好,给定的人会输入"CTHULH%"之类的东西,在这种情况下我可以构建一个模式:
Pattern.compile(inputText.replaceAll("%", ".*"));
Run Code Online (Sandbox Code Playgroud)
但如果用户人员来自Innsmouth,那么他会输入".+\[a - #$%^&*("用几个简单的击键来破坏我的方案.这不可行):
Pattern.compile(Pattern.quote(inputText).replaceAll("%", ".*"));
Run Code Online (Sandbox Code Playgroud)
因为它会在开头放置\ Q,在字符串末尾放置\ E,渲染我的% - >.*开关.
问题是:我是否必须在模式代码中查找每个特殊字符并通过在前面添加"\\"来自行转义,或者这可以自动完成吗?或者我是如此深入到问题中,我忽略了一些明显的解决方法?