如何强制hibernate生成数据库模式,以便将CamelCase转换为下划线(使用HBM)?例如.我有:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cz.csas.pdb.be.model.product.passive">
<class name="foo.BarBaz">
<id name="barBazId">
<generator class="sequence"/>
</id>
<property name="extractContactType"/>
<!-- ... -->
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
我希望hibernate创建这样的表(oracle):
CREATE TABLE "BAR_BAZ"
(
"BAR_BAZ_ID" NUMBER(19,0) NOT NULL ENABLE,
"EXTRACT_CONTACT_TYPE" VARCHAR2(512 CHAR),
-- PK etc...
)
Run Code Online (Sandbox Code Playgroud)
我知道我可以在hbm.xml文件中使用表/列名,但我想全局设置它(既节省时间又防止错误).
我正在使用Hibernate + spring + @Transactionalannotations来处理我的应用程序中的事务.
事务管理器声明如下:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下效果很好,但是我发现了一个问题,我有两种方法,都注释了@Transactional:
package temp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
public class OuterTestService {
@Autowired
private InnerTestService innerTestService;
@Transactional
public void outerMethod() {
try {
innerTestService.innerTestMethod();
} catch (RuntimeException e) {
// some code here
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
package temp;
import org.springframework.transaction.annotation.Transactional;
public class InnerTestService {
@Transactional
public void innerTestMethod() throws RuntimeException {
throw new RuntimeException();
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用OuterTestService#outerMethod()时,我得到一个异常
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has …Run Code Online (Sandbox Code Playgroud) 什么是实例变量(在接口中声明的)工作的正确方法,他们@property和@synthesize在ARC项目时?我现在做的是:
SomeClass.h:
@interface SomeClass : NSObject {
NSString *someString;
}
@property(nonatomic, copy) NSString* someString;
Run Code Online (Sandbox Code Playgroud)
和SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
self.someString = @"Foobar";
}
Run Code Online (Sandbox Code Playgroud)
问题是还有其他方法可行,比如只使用@property:
SomeClass.h:
@interface SomeClass : NSObject
@property(nonatomic, copy) NSString* someString;
Run Code Online (Sandbox Code Playgroud)
访问someString不包括self:
SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
someString = @"Foobar";
}
Run Code Online (Sandbox Code Playgroud)
我是Objective-c的新手,我已经习惯了Java.那么使用属性的正确方法是什么?我知道特殊情况会有特殊行为,但一般来说最好的方法是什么?(一般来说,我的意思是我想从类本身和"外部"访问变量,我希望ARC仍能正常工作,例如.我不必担心内存泄漏)
我有一个SQL文件,我想使用cx_Oraclepython库在oracle中解析和执行.SQL文件包含经典的DML/DDL和PL/SQL,例如.它看起来像这样:
create.sql:
-- This is some ; malicious comment
CREATE TABLE FOO(id numeric);
BEGIN
INSERT INTO FOO VALUES(1);
INSERT INTO FOO VALUES(2);
INSERT INTO FOO VALUES(3);
END;
/
CREATE TABLE BAR(id numeric);
Run Code Online (Sandbox Code Playgroud)
如果我在SQLDeveloper或SQL*Plus中使用此文件,它将被拆分为3个查询并执行.
但是,cx_Oracle.connect(...).cursor().execute(...)一次只能获取一个查询,而不是整个文件.我不能简单地拆分字符串string.split(';')(这里建议从cx_oracle执行sql脚本文件?),因为两个注释都将被拆分(并且会导致错误)并且PL/SQL块不会作为单个命令执行,因此导致错误.
在Oracle论坛(https://forums.oracle.com/forums/thread.jspa?threadID=841025)上,我发现cx_Oracle本身不支持解析整个文件.我的问题是 - 有一个工具可以帮我吗?例如.我可以调用一个python库将我的文件拆分成查询?
编辑:最好的解决方案似乎直接使用SQL*Plus.我用过这段代码:
# open the file
f = open(file_path, 'r')
data = f.read()
f.close()
# add EXIT at the end so that SQL*Plus ends (there is no --no-interactive :(
data = "%s\n\nEXIT" % data
# …Run Code Online (Sandbox Code Playgroud) 我需要我的原生iPad应用程序以加密形式存储其数据(例如通过HTTPS下载的.DOC文档).那些.DOC文件将在iPad上的第三方应用程序中打开.
我需要知道是否有一种方法可以加密我的应用程序和第三方应用程序的数据?这意味着我的.DOC文件永远不会以未加密的形式存储在设备上.(这里的动机是我的应用程序下载包含敏感信息的文档,我希望在iPad上读取这些文档,但需要使用磁盘加密保护层.)
我正在阅读Advanced App Tricks @ apple.com,"使用磁盘加密保护数据"部分,但无法找到任何相关信息.
我正在尝试重构具有大量复制粘贴功能的Thymeleaf代码。一般的想法是我们有这样的东西:
<form th:object="${createForm}">
<div><input type="text" th:field="*{first}"/> <!-- some boilerplate code --></div>
<div><input type="text" th:field="*{second}"/> <!-- some boilerplate code --></div>
<div><input type="text" th:field="*{third}"/> <!-- some boilerplate code --></div>
<div><input type="text" th:field="*{fourth}"/> <!-- some boilerplate code --></div>
</form>
Run Code Online (Sandbox Code Playgroud)
我想重构片段
<input type="text" th:field="*{first}"/> <!-- some boilerplate code -->
Run Code Online (Sandbox Code Playgroud)
到一个单独的文件,因为它有很多复制粘贴(样板代码部分中有很多HTML)。
我的第一种方法是执行以下操作:
<form th:object="${createForm}">
<div th:replace="fragments/input :: input(*{first}" />
<div th:replace="fragments/input :: input(*{second}" />
<div th:replace="fragments/input :: input(*{third}" />
<div th:replace="fragments/input :: input(*{fourth}" />
</form>
Run Code Online (Sandbox Code Playgroud)
然后有一个fragments/input.html文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta …Run Code Online (Sandbox Code Playgroud) 我有一个简单的PL/SQL过程,有一个游标,我迭代它.在每次迭代中,我都会创建一个UPDATE语句(在对数据执行某些业务逻辑之后).
但是,如果有很多迭代(数万个),这可能会变得非常慢,因为在每次迭代中都有单个UPDATE语句.
有没有办法以某种方式"延迟"这些更新,以便它们一次性执行(因此更快).
编辑:Oracle 11
有没有一种简单的方法可以找到用户在图像内部点击的位置(div,...),相对于元素的左上角?(使用js/jquery)
基本event.pageX/event.pageY不考虑滚动和元素位置.组合Document.getScrollTop()和element.getAbsoluteTop(鼠标单击图像上的位置)看起来并不好看(据我所知,甚至可能不适用于所有浏览器).
有更简单的方法吗?
hibernate ×2
objective-c ×2
oracle ×2
spring ×2
cx-oracle ×1
database ×1
encryption ×1
ios ×1
ipad ×1
java ×1
javascript ×1
jpa ×1
jpa-2.0 ×1
jquery ×1
oracle11g ×1
performance ×1
plsql ×1
python ×1
rollback ×1
security ×1
synthesize ×1
thymeleaf ×1
transactions ×1