我试图在生产模式下使用Oracle数据库进行jhipster开发。 我的数据库配置是
public class Player : MonoBehavior
{
private float cooldown = 0;
private const float ShootInterval = 3f;
void Shoot()
{
if(cooldown > 0)
return;
// shoot bullet
cooldown = ShootInterval;
}
void Update()
{
cooldown -= Time.deltaTime;
}
}
Oracle服务器已启动并正在运行,我能够使用给定的凭据连接到数据库。 在mvn -Pprod mvn-boot:run之后我得到了以下SQLException
profiles:
active: prod
datasource:
driverClassName: oracle.jdbc.OracleDriver
dataSourceClassName: oracle.jdbc.pool.OracleDataSource
url: jdbc:oracle:thin:@127.0.01:49161:xe
databaseName:
serverName:
username: vpp_owner
password: vpp_owner
jpa:
database-platform: org.hibernate.dialect.Oracle10GDialect
database: ORACLE
openInView: false
show_sql: true
generate-ddl: false
hibernate:
ddl-auto: none
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
properties:
hibernate.cache.use_second_level_cache: true
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: false
hibernate.cache.region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
问题似乎是DEFAULT SEQ_USER.NEXTVAL NOT NULL表达式。
任何提示帽子出错了?
我使用的是jhipster 2.19.0和Oracle 11g。
答案 0 :(得分:0)
Oracle 11g无法做到这一点。
从此处的文档:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_7002.htm#sthref7262
DEFAULT表达式不能包含对PL / SQL函数的引用或 到其他列,伪列CURRVAL,NEXTVAL,LEVEL,PRIOR, 和ROWNUM,或未完全指定的日期常量。
此类声明仅适用于Oracle 12c或更高版本:
https://oracle-base.com/articles/12c/default-values-for-table-columns-enhancements-12cr1
答案 1 :(得分:0)
当我对生成的源应用一些更改时,我可以使用11G数据库。
在User.java中,使用GenerationType.AUTO替换GenerationType.SEQUENCE作为id字段。
In der liquibase changelog files删除所有id字段的defaultValueComputed属性。
删除表格特定序列
不要从“base”更改日志中删除hibernate_sequence; - )
可能这可以包含在jhipster生成器中吗?
答案 2 :(得分:0)
正如@ Moh-Aw所说,它适用于Oracle 12c或更高版本。对于不支持计算默认值的先前版本,您可以使用触发器。 这是
的补丁diff --git a/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml b/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
index dbdae03..702d0ba 100644
--- a/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
+++ b/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
@@ -22,7 +22,7 @@
<changeSet id="00000000000001" author="jhipster">
<createSequence sequenceName="SEQ_USER" startValue="1000" incrementBy="1"/>
<createTable tableName="JHI_USER">
- <column name="id" type="bigint" autoIncrement="${autoIncrement}" defaultValueComputed="SEQ_USER.NEXTVAL">
+ <column name="id" type="bigint" autoIncrement="${autoIncrement}">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="login" type="varchar(50)">
@@ -52,7 +52,7 @@
<column name="last_modified_by" type="varchar(50)"/>
<column name="last_modified_date" type="timestamp"/>
</createTable>
-
+
<createTable tableName="JHI_AUTHORITY">
<column name="name" type="varchar(50)">
<constraints primaryKey="true" nullable="false"/>
@@ -119,10 +119,10 @@
file="config/liquibase/users_authorities.csv"
separator=";"
tableName="JHI_USER_AUTHORITY"/>
-
+
<createSequence sequenceName="SEQ_PERSISTENT_AUDIT_EVENT" startValue="1000" incrementBy="1"/>
<createTable tableName="JHI_PERSISTENT_AUDIT_EVENT">
- <column name="event_id" type="bigint" autoIncrement="${autoIncrement}" defaultValueComputed="SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL">
+ <column name="event_id" type="bigint" autoIncrement="${autoIncrement}" >
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="principal" type="varchar(255)">
@@ -162,5 +162,37 @@
referencedColumnNames="event_id"
referencedTableName="JHI_PERSISTENT_AUDIT_EVENT"/>
</changeSet>
-
+
+ <changeSet id="defaultValueComputedOnAutoIncrementFields" author="cirovladimir" dbms="mysql,h2,postgresql">
+ <addDefaultValue tableName="JHI_USER"
+ columnName="id" columnDataType="bigint" defaultValueComputed="SEQ_USER.NEXTVAL"/>
+ <addDefaultValue tableName="JHI_PERSISTENT_AUDIT_EVENT"
+ columnName="event_id" columnDataType="bigint" defaultValueComputed="SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL"/>
+ </changeSet>
+
+ <changeSet id="triggerOnAutoIncrementFields" author="cirovladimir" dbms="oracle">
+ <createProcedure>
+ CREATE OR REPLACE TRIGGER TRG_JHI_USER_ID
+ BEFORE INSERT
+ ON JHI_USER
+ FOR EACH ROW
+ DECLARE
+ BEGIN
+ SELECT SEQ_USER.NEXTVAL INTO :NEW.ID FROM DUAL;
+ END TRG_JHI_USER_ID;
+ </createProcedure>
+ <createProcedure>
+ CREATE OR REPLACE TRIGGER TRG_PERSISTENT_AUDIT_EVENT_ID
+ BEFORE INSERT
+ ON JHI_PERSISTENT_AUDIT_EVENT
+ FOR EACH ROW
+ DECLARE
+ BEGIN
+ SELECT SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL INTO :NEW.EVENT_ID FROM DUAL;
+ END TRG_PERSISTENT_AUDIT_EVENT_ID;
+ </createProcedure>
+ </changeSet>
+
+
+
</databaseChangeLog>