要创建表我使用:
CREATE TABLE category
(
cat_id serial NOT NULL,
cat_name character varying NOT NULL,
parent_id integer NOT NULL,
CONSTRAINT cat_id PRIMARY KEY (cat_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE category
OWNER TO pgsql;
Run Code Online (Sandbox Code Playgroud)
parent_id是另一个类别的id.现在我有一个问题:如何与其子级级联删除记录?我需要将parent_id设置为cat_id的外键.我试试这个:
ALTER TABLE category
ADD CONSTRAINT cat_cat_id_fkey FOREIGN KEY (parent_id)
REFERENCES category (cat_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)
但它落在:
ERROR: insert or update on table "category" violates foreign key constraint "cat_cat_id_fkey"
DETAIL: Key (parent_id)=(0) is not present in table "category".
Run Code Online (Sandbox Code Playgroud) 我需要从 a 中检索值ResultSet
以通过反射来使用它们来调用构造函数。我正在尝试使用 Class.cast(Object),但我总是得到一个InvalidCastException
.
这就是我所拥有的:
Object[] args = new Object[count];
Class<?>[] arr = co.getParameterTypes();
for(i = 0; i<args.length; i++){
args[i] = arr[i].cast(rs.getObject(i+1));
}
Object t;
try {
t = co.newInstance(args);
} catch (Exception e) {
throw new RuntimeException(e);
}
return (T)t;
Run Code Online (Sandbox Code Playgroud)
co 是构造函数,rs 是ResultSet
我已经拥有的。
Oracle SQL-Developer生成已经存在的数据库表(项)的DDL语句.生成的DDL语句无法在新的数据库实例中应用,这很奇怪.这是DDL的简化示例
CREATE TABLE AB
(
"A" NUMBER(*,0),
"B" NUMBER(*,0),
"C" VARCHAR2(255 BYTE),
CONSTRAINT "CHK_AB_A_NN" CHECK (A IS NOT NULL) ENABLE,
CONSTRAINT "CHK_AB_B_NN" CHECK (B IS NOT NULL) ENABLE,
CONSTRAINT "PK_AB" PRIMARY KEY ("A", "B")
);
CREATE INDEX "IDX_AB_A" ON "AB"("A");
CREATE INDEX "IDX_AB_B" ON "AB"("B");
CREATE UNIQUE INDEX "PK_AB" ON "AB"("A", "B");
Run Code Online (Sandbox Code Playgroud)
如果我在新的oracle实例中执行这些语句,我会收到错误:
SQL-Fehler: ORA-01408: Diese Spaltenliste hat bereits einen Index
1. 00000 - "such column list already indexed"
这个错误的原因是什么?
虽然我发现了一篇关于OMT
vs.UML
的文章但我无法弄清楚使用OMT
而不是使用的后果UML- class diagram
.OMT
相比有UML- class diagram
什么好处?到目前为止,我知道我可以用几乎相同的方式来描绘类图UML
,或者是否有任何已知的情况只能OMT
说明特定的上下文?还有一个更有趣的问题是,用于在两种建模工具之间进行选择的标准是什么?
我需要标准化文件路径,以便路径的一部分可以通过String.StartsWith(...)
例子:
尽管这两个文件路径是等效的,但公共部分无法通过 方法 进行匹配String.StartsWith(...)
。
我现在知道API方法:Path.NormalizePath(path, true);
可以进行规范化,但不幸的是这个方法是内部受保护的!
为了使文件路径标准化,我还有哪些其他机会?Path.GetFullPath(...)
可能是可选的,但仅适用于绝对文件路径,因为它会为相对文件路径添加一个前缀,例如: C:/ 。
我有一个名为的证书链:cert.cer
内容为:
subject= ... OU=MyCA
issuer= ... OU=MyCA
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
subject= ... OU=Client
issuer= .. OU=MyCA
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
我尝试通过调用以下方法将此链添加到JKS:
keytool -import -trustcacerts -file cert.cer -keystore sample.keystore -storepass 123456 -alias chain
,只添加OU = MyCA的顶级证书.
如何将此链正确添加到JavaKeyStore(JKS)?
对于REST服务(RESTeasy),我创建了JUnit测试用例,例如:
@Test
public void a100_insertAddressTest() throws Exception {
Address addr = new Address(1, "testStreet", "1", (short) 1234,
"testCity");
ClientRequest request = new ClientRequest(BASE_URL + "customerID/{id}",
sslExecutor_schusb);
request.body(MediaType.APPLICATION_XML, addr).pathParameter(
"id", 1);
ClientResponse<String> response = request.post(String.class);
Assert.assertEquals(201, response.getStatus());
response.releaseConnection();
request.clear();
}
Run Code Online (Sandbox Code Playgroud)
如果我将请求主体的媒体类型更改为"application/json",则测试用例将失败并显示错误:
java.lang.RuntimeException: could not find writer for content-type application/json type: at.fhj.ase.dao.data.Address
at org.jboss.resteasy.client.ClientRequest.writeRequestBody(ClientRequest.java:469)
at org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.loadHttpMethod(ApacheHttpClient4Executor.java:221)
at org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.execute(ApacheHttpClient4Executor.java:107)
at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:39)
at org.jboss.resteasy.plugins.interceptors.encoding.AcceptEncodingGZIPInterceptor.execute(AcceptEncodingGZIPInterceptor.java:40)
at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:45)
at org.jboss.resteasy.client.ClientRequest.execute(ClientRequest.java:443)
at org.jboss.resteasy.client.ClientRequest.httpMethod(ClientRequest.java:674)
at org.jboss.resteasy.client.ClientRequest.post(ClientRequest.java:565)
at org.jboss.resteasy.client.ClientRequest.post(ClientRequest.java:570)
at at.fhj.ase.business.ServiceAddressImplTest.a100_insertAddressTest(ServiceAddressImplTest.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown …
Run Code Online (Sandbox Code Playgroud) 我有一个通过TLS保护的JAX-RS Web服务。因此,加密非常重要,因此我决定使用RawCap检查网络流量并使用WireShark对其进行分析。这样做时,我偶然发现了以下消息:
Header checksum: 0x0000 [incorrect, should be 0xac15 (may be caused by "IP checksum offload"?)]
Run Code Online (Sandbox Code Playgroud)
我非常确定这对我的RESTEasy客户端来说不是问题,因为通过FireFox检索资源会导致相同的消息。
我知道我可以在包规范中创建一个子类型,例如:
CREATE OR REPLACE PACKAGE XY
AS
SUBTYPE type_sdebug IS VARCHAR (200);
...
END;
/
Run Code Online (Sandbox Code Playgroud)
如果我想在另一个包中使用相同的子类型,那么我需要再次重新定义相同的类型。有没有办法创建或替换全局子类型,例如:
CREATE OR REPLACE TYPE STRING_ARRAY AS VARRAY(500) OF VARCHAR2(30);
/
Run Code Online (Sandbox Code Playgroud)