我正在编写java应用程序,hibernate 5.2但没有HQL
有两张桌子,Transactions和ResponseCode
我希望由Hibernate生成的select语句的逻辑看起来应该如下所示
SELECT t.tranType
,t.tranId
,t.requestDate
,t.rcCode
,t.tranAmount
,r.description
,r.status
FROM transactions t
LEFT OUTER JOIN responseCode r
ON t.rcCode = r.rcCode
AND (r.lang = 'en')
WHERE (t.merchant_id =5 )
Run Code Online (Sandbox Code Playgroud)
但是我的代码出了问题,这是我的实现代码段
交易实体
@Entity
@Table(name = "transactions")
public class Transaction implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "merchant_id", nullable = true)
private String merchantID;
@Column(name = "tran_amount", nullable = true)
private String tranAmount;
@Id
@Column(name = "tran_type", nullable …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建物化视图,它将每5分钟自动更新一次,我需要基于Mview日志表进行更新.
我在TABLE1 TABLE1.SQL脚本上创建了Materialized视图日志
CREATE MATERIALIZED VIEW LOG ON TABLE1; -- MLOG$_TABLE1
Run Code Online (Sandbox Code Playgroud)
然后我创建了物化视图
CREATE MATERIALIZED VIEW JIBO_MVIEW
REFRESH START WITH SYSDATE NEXT SYSDATE +5/24/60
ENABLE QUERY REWRITE AS
SELECT O.ID
,O.DATETIME_CREATED
,O.ORIGINATOR
,O.DETAILS
,O.PAYMENT_REF
FROM TABLE1 O
WHERE O.ORIGINATOR LIKE '53%';
Run Code Online (Sandbox Code Playgroud)
更改某些值后在TABLE1中,新的Record插入了MLOG $ _TABLE1日志表
但在物化视图(JIBO_MVIEW)中未更新更改的值.(即使一天后:))
当我检查警报日志时,自动生成的DBMS_JOB存在问题,每次执行都会失败.
- ORA-12012: error on auto execute of job 4263
- ORA-00942: table or view does not exist
- ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2809
- ORA-06512: at "SYS.DBMS_SNAPSHOT", line 3025
- ORA-06512: at "SYS.DBMS_IREFRESH", line …Run Code Online (Sandbox Code Playgroud) 我在我的机器上安装了2个版本的java,1.7和1.8.用于构建我的java项目我正在使用maven 3.5.0.
在某些情况下,我必须使用java 1.7构建我的java项目,所以我将%JAVA_HOME%环境变量更改"C:\Program Files\Java\jdk1.7.0_80"为"C:\Program Files\Java\jdk1.8.0_131".
然后我想如果我能这样做,pom.xml确定java的版本,通过它来构建项目.
起初我的pom.xml看起来像这样
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
...
</plugins>
Run Code Online (Sandbox Code Playgroud)
你可以看到有<source>和<target>标签,但这个标签不适用于java 1.7,1.8,也许它适用于早期版本.
所以我不得不在Mavens"settings.xml"和"pom.xml"文件中进行一些更改:
的settings.xml
<profiles>
<profile>
<id>compiler</id>
<properties>
<JAVA_1_7_HOME>C:\Program Files\Java\jdk1.7.0_80\bin\javac</JAVA_1_7_HOME>
<JAVA_1_8_HOME>C:\Program Files\Java\jdk1.8.0_131\bin\javac</JAVA_1_8_HOME>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>compiler</activeProfile>
</activeProfiles>
Run Code Online (Sandbox Code Playgroud)
的pom.xml
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<executable>${JAVA_1_7_HOME}</executable>
<verbose>true</verbose>
<fork>true</fork>
</configuration>
</plugin>
...
</plugins>
Run Code Online (Sandbox Code Playgroud)
然后使用构建mvn install和它工作!如果我将可执行文件更改为$ {JAVA_1_8_HOME},则生成的jar文件的大小会发生变化.
但是MANIFEST.MF有一个大问题.JDK的构建版本是1.8.0_161,所以MANIFEST.MF会骗人,想找出构建jdk版本.
这样做的原因是Maven(mvn.cmd文件)看起来是%JAVA_HOME%并且采用了java的路径.如果环境中没有%JAVA_HOME%变量,则采用默认系统java -version,在我的情况下是1.8.0_161(JRE版本).
这是mvn.cmd代码片段
@REM ==== START VALIDATION ====
if not …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建实体化视图,该视图将在 DB1 上每 6 小时运行一次,并从 DB2 表中复制数据。我在 DB2 远程表上创建了 MLOG$_REMOTE_TABLE1。
我正在使用 Oracle 11g(ps oracle 12g 在执行此脚本时没有问题)
在下面执行此脚本时,出现错误:
CREATE MATERIALIZED VIEW REPL_TABLE1
REFRESH FORCE ON DEMAND
START WITH SYSDATE NEXT SYSDATE + 6/24
ENABLE QUERY REWRITE
AS
SELECT * FROM REMOTE_TABLE1_SYN;
Run Code Online (Sandbox Code Playgroud)
ORA-30372: 细粒度访问策略与物化视图冲突
请告诉我为什么我在 11g 而不是 12g 上有这个问题(它是 11g 的错误)?我该如何解决?