我正在使用oracle 10g
和hibernate 3.3.2
.我之前在sql中使用过正则表达式,现在我第一次在HQL中使用它.
Query query = getSession().createQuery("From Company company
where company.id!=:companyId and
regexp_like(upper(rtrim(ltrim(company.num))), '^0*514619915$' )");
Run Code Online (Sandbox Code Playgroud)
这是我的hql,当我运行它没有regex_like
函数时,它按预期运行.但我无法用regex_like
表达式执行它.
它说..
嵌套异常是org.hibernate.hql.ast.QuerySyntaxException:意外的AST节点:(靠近第1行,第66列......
请帮助,我如何regex_like
在hibernate本机查询中使用?或其他一些替代方法.
我有三张桌子,结构如下 -
合同 - > contract_id(主要),customer_company_id,Vendor_company_id
公司 - > Company_id(主要),creation_date,created_by
Company_Timeline - > Timeline_id(Primary),Company_id,Company_name.
并为这些表提供以下类 -
Contract.java
@Table(name = "CONTRACT")
@Entity
@SequenceGenerator(name = "ContractSeq", sequenceName = "SEQCONTRACT", allocationSize = 1)
public class Contract implements Serializable {
private static final long serialVersionUID = 1L;
/*
* General Tab
*/
@Id
@Column(name = "CONTRACT_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ContractSeq")
private Integer id;
/*
* Customer Company Info
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CUSTOMER_COMPANY_ID", nullable = true ,insertable = false,updatable = …
Run Code Online (Sandbox Code Playgroud) 嗨,我在数据库中搜索名称组合.我正在通过如下组合
"firstName='" + firstName + "'", "middleName='" + middleName + "'", "lastName='" + lastName + "'"
Run Code Online (Sandbox Code Playgroud)
这很好用.但问题出现在名称中有一些"'",我该如何纠正它?例如:Johns'或Jerry's等导致异常
create or replace TRIGGER REFRESH_REST_VIEW
AFTER
INSERT OR UPDATE
ON tbl_contract
BEGIN
execute DBMS_MVIEW.REFRESH('REST_VIEW');
END REFRESH_REST_VIEW;
commit;
Run Code Online (Sandbox Code Playgroud)
这是我用来刷新Materialized View的sql触发器.但它说......
Warning: execution completed with warning
TRIGGER REFRESH_REST_VIEW Compiled.
Run Code Online (Sandbox Code Playgroud)
PS:当表的数据(由Materialized View使用)进行任何DML操作时,将执行触发器.
我已经google了足够多,很多帖子说这是可能的,但我没有得到如何做到这一点.我尝试使用常规触发器语法,但它不起作用.
更新:
现在我尝试与过程和触发器相同..
create or replace
PROCEDURE Rfresh_mate_views AS
BEGIN
DBMS_MVIEW.REFRESH('REST_VIEW');
END Rfresh_mate_views;
create or replace trigger refresh_company_mview
after insert or update ON BCD.BCD_COMPANY
begin
RFRESH_MATE_VIEWS();
end refresh_company_mview;
Run Code Online (Sandbox Code Playgroud)
所有都已成功编译,但在表中更新时它说:
ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2449
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2429
ORA-06512: at "BCD.RFRESH_MATE_VIEWS", line 3
ORA-06512: …
Run Code Online (Sandbox Code Playgroud) 我们可以在一个JVM中运行多个进程吗?而且每个进程都应该有自己的内存配额?
我的目标是在有新的http请求进入时启动新进程,并为进程分配一个单独的内存,以便每个用户请求都有自己的内存配额-如果一个人的内存配额已满,则不会打扰其他用户请求。
我该如何实现?
不知道这是否是假设。