我正在编写一个简单的Web应用程序来调用存储过程并检索一些数据.它是一个非常简单的应用程序,它与客户端的数据库进行交互.我们传递员工ID和公司ID,存储过程将返回员工详细信息.
Web应用程序无法更新/删除数据并且正在使用SQL Server.
我正在Jboss AS中部署我的Web应用程序.我应该使用JPA来访问存储过程或CallableStatement
.在这种情况下使用JPA的任何优点.
另外,调用此存储过程的sql语句是什么.我之前从未使用过存储过程,而且我正在努力解决这个问题.谷歌没有多大帮助.
这是存储过程:
CREATE procedure getEmployeeDetails (@employeeId int, @companyId int)
as
begin
select firstName,
lastName,
gender,
address
from employee et
where et.employeeId = @employeeId
and et.companyId = @companyId
end
Run Code Online (Sandbox Code Playgroud)
更新:
对于其他任何使用JPA调用存储过程的问题.
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
我注意到的事情:
{call sp_name(?,?)}
而不是 call sp_name(?,?)
getSingleResult
不会工作resultSetMapping
名称或结果类详细信息我正在尝试将使用IBM websphere 8.0.0.5的"经典"JAVA EE项目转换为maven多模块项目,并面临IBM家属的问题.
我们使用以下包中的IBM类:
为了编译我的本地项目,我从IBM下载了was.installer-8.0.0.pm 并将其安装到我的maven中使用
mvn install -f "was.installer-8.0.0.pom" -D serverInstallationFolder="C:\Program Files (x86)\IBM\WebSphere\AppServer"
Run Code Online (Sandbox Code Playgroud)
根据命令行输出,此步骤成功.
然后,我将以下依赖项添加到我的项目中,如IBM所述:
在父母:
<dependency>
<groupId>com.ibm.tools.target</groupId>
<artifactId>was</artifactId>
<version>8.0.0</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在模块中:
<dependency>
<groupId>com.ibm.tools.target</groupId>
<artifactId>was</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但由于找不到IBM软件包,我仍然无法编译我的项目.
任何人都可以帮我找到并纠正我犯的错误吗?
编辑
在从评论中关注BevynQ提示之后,我将"was_public.jar"复制到"was_public-8.0.0.jar"(在IBM这里描述)并将其添加到我的存储库中:
mvn install:install-file -Dfile="C:\Program Files (x86)\IBM\WebSphere\AppServer\dev\was_public-8.0.0.jar" -DpomFile="C:\Program Files (x86)\IBM\WebSphere\AppServer\dev\was_public-8.0.0.pom"
Run Code Online (Sandbox Code Playgroud)
然后我将依赖项更改为:
<dependency>
<groupId>com.ibm.websphere.appserver</groupId>
<artifactId>was_public</artifactId>
<version>8.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.ibm.websphere.appserver</groupId>
<artifactId>was</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这有助于com.ibm.websphere
完成导入的编译错误.
我现在还打开的是包裹com.ibm.ws.*
包.有人有想法吗?
编辑2
我添加了以下依赖项,然后我摆脱了com.ibm.ws.*
导入错误.
<dependency>
<groupId>com.ibm.websphere.ws</groupId>
<artifactId>com.ibm.ws.runtime</artifactId>
<version>1.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但它仍然没有编译,因为现在无法找到间接引用(在我的情况下commonj.work.WorkManager
).似乎我需要为每一件事添加更多.jars.是否有一种更简单的方法可以一次性提供所有的websphere …
编辑:愚蠢。问题是我得到了一个值为 'null' 的字符串
如何正确比较groovy中的null?
我有以下脚本
println "row6: " + row[6]
if(row[6] == null) {
println "if"
}
else {
println "else"
}
Run Code Online (Sandbox Code Playgroud)
当我使用指定字段为空的行运行它时,这是输出:
row6: null
else
Run Code Online (Sandbox Code Playgroud)
在Groovy的文档说a == null
会的工作,而a.is(null)
不会。
那么我如何以正确的方式比较 groovy 中的 null 呢?
PS 我看到了SO-Thread: compare-null-and-number-in-groovy。它说 null 作为数字处理,但这仍然意味着==
当值为 null 时,比较应该有效。
我们有一个项目定义了它使用 XSD 文件生成的消息格式。
将这些 XSD 文件作为另一个项目的依赖项的最简单方法是什么?
我正在考虑使用maven-build-helper Attach-artifact目标来附加我的 XSD 文件。
有没有更好的机制?
我正在使用cakePHP验证
场景:在我的数据库中,我有一个表"联盟"和一个"联盟".在"联盟"中,存储联盟之间的联系."联盟"有像id,name等愚蠢的cols ..联盟是这样的:
id, request_alliance, accept_alliance, type, requested_at, accepted_at
Run Code Online (Sandbox Code Playgroud)
其中request_alliance和accept_alliance对联盟是FK,类型是1或2.
所以我的模型看起来像这样:
class Federation extends AppModel
{
// Bundarten:
// 1 - NAP
// 2 - Bund
public $displayField;
var $belongsTo = array('Alliance_requesting' => array('className' => 'Alliance', 'foreignKey' => 'request_alliance'),
'Alliance_accepting' => array('className' => 'Alliance', 'foreignKey' => 'accept_alliance'));
public $validate = array(
'request_alliance' => array('required' => true, 'allowEmpty' => false),
'accept_alliance' => array('required' => true, 'allowEmpty' => false),
'type' => array('required' => true, 'allowEmpty' => false, 'rule' => array('between', 1, 2)) …
Run Code Online (Sandbox Code Playgroud) 使用HierarchyViewer工具,您可以检查应用程序的布局层次结构。这很好用,我可以毫无问题地分析我的观点。我还用Lint检查了我的来源。
如优化 UI中所述,颜色代表视图测量、布局和绘制的速度。
性能指标:一组三个彩色点,指示此 View 相对于树中其他 View 对象的渲染速度。三个点代表(从左到右)渲染的测量、布局和绘制时间:
颜色表示以下相对性能:
- 绿色:对于这部分渲染时间,此 View 位于树中所有 View 对象中速度较快的 50%。例如,测量时间的绿点表示该 View 的测量时间比树中 50% 的 View 对象更快。
- 黄色:对于这部分渲染时间,此 View 位于树中所有 View 对象中较慢的 50% 中。例如,布局时间的黄点表示该 View 的布局时间比树中 50% 的 View 对象慢。
- 红色:对于这部分渲染时间,此视图是树中最慢的视图。例如,绘制时间的红点表示该 View 在树中的所有 View 对象中花费最多的绘制时间。
这意味着红色灯泡“仅”意味着该特定项目与树中的所有其他项目相比是最慢的。这并不意味着时间比值 X 慢,因此它被读取 - 就像您从 ping 分析工具中知道的那样,这些工具以红绿灯方式显示其结果,关于测量的 ping 为“慢、中、快”次。
在检查了我的应用程序的不同视图后,我注意到输入字段比文本字段慢,LinearLayouts
然后更快FragmentLayouts
,诸如此类。然后,我搜索了有关改善某些视图的绘制时间的信息和帮助。但这次搜索对我来说并不是很满意。
谷歌优化你的用户界面告诉你:
使用视图层次结构进行优化
查看层次结构还可以帮助您识别渲染性能缓慢的情况。首先查看具有红色或黄色性能指示器的视图节点,以识别较慢的视图对象。当您逐步执行应用程序时,您可以判断视图是否始终缓慢或仅在某些情况下缓慢。
请记住,性能缓慢并不一定是问题的证据,尤其是对于 ViewGroup 对象。具有更多子级和更复杂的 View 对象的 View 对象渲染速度更慢。
“查看层次结构”窗口还可以帮助您发现性能问题。只需查看每个 View 节点的性能指标(点),您就可以了解哪些 View 对象的测量、布局和绘制速度最慢。由此,您可以快速确定应该首先查看的问题。
我的选择或多或少告诉你什么。在另一页Revise Your Layout上有一个小示例,其中将两个文本视图放在 a …
一些同事提出了一个问题,他们认识到查询的执行时间很慢,并且发现由于隐式类型转换而未使用索引。
该表具有kgb_uuid
用于存储UUID 的属性。该列定义为,VARCHAR2
并在其上具有索引以通过UUID搜索行。
实体中的相关字段定义为String
。根据Hibernate文档,Hibernate应该将此字符串转换为VARCHAR2
Oracle数据库上的字符串,因此应使用索引。
但这不是日志显示的情况:
[9/2/19 11:56:07:610 CEST] 00000177 SystemOut O
2019-09-02T11:56:07,610 TRACE [ebContainer:3] ibebcTraceInterceptor; log ;; 41-类[MyDAO]中的输入方法[checkEindeutigeUUID]带参数(MyEntity @ b14745f9)[9/2/19 11:56:07:688 CEST] 00000177 SQL Z org.hibernate.engine.jdbc.spi.SqlStatementLogger logStatement从MYENTITYTABLE mytab_中选择count(mytab0_.KGB_NR)作为col_0_0_,其中mytab_.KGB_UUID =?和mytab_.EKN_NR =?
[9/2/19 11:56:07:688 CEST] 00000177 BasicBinder Z org.hibernate.type.descriptor.sql.BasicBinder绑定绑定参数[1]为[VARCHAR]-795BF3B98D879358E0531C03A90ABF0A [9/2/19 11:56 :07:688 CEST] 00000177 BasicBinder Z org.hibernate.type.descriptor.sql.BasicBinder绑定绑定参数[2]为[BIGINT]-1
如图所示,String值的绑定VARCHAR
不是not VARCHAR2
,导致数据库进行隐式类型转换,而未使用索引,如OEM中所示(这是来自OEM的原始德语消息):
DasPrädikatSYS_OP_C2C(“ mytab _”。“ KGB_UUID”)=:B1,在Zeilen-ID 3 desAusführungsplansbenutzt wird中创建,并在Konvertierung des Impliziten DatentypsUuf indexerten SpalID中添加“ KGB_U”。Diese Konvertierung des impliziten Datentyps verhindert,dass der Optimizer为auf Tabelle“ …
我刚刚在我的win7(x64)PC上安装了一个真正的XAMPP来编写一些PHP脚本来连接到oracle DB.我也安装了一个普通的oracle 11.2.0客户端(正确设置了PATH和ORACLE_HOME).客户端用于我的所有其他工作没有任何问题.
当我尝试连接到oracle DB时,PHP失败了Fatal error: Call to undefined function oci_connect() in
.我记得几年前我在x32 winXP PC上做了同样的事情时,我必须在我的php.ini中启用"oci8-extensions".但是我当前的xampp在php/ext
文件夹中没有这些dll (只有一个php_oci8_12c.dll
在apache启动时抛出了几个未知函数的错误,而且是针对oracle 12而不是11),而php.ini也表示它们仅用于即时客户端.
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
Run Code Online (Sandbox Code Playgroud)
此SO问题也显示使用普通客户端的评论扩展名不起作用(我也尝试过).
我试图谷歌寻求解决方案,但所有"解决方案"都是"安装win32即时客户端并启用扩展".但我不能这样做,因为我的大多数QA工作需要安装和配置的11.2.0客户端,而且我的php/ext文件夹中没有.dll
我还尝试将ociw32.dll从client/bin文件夹复制到php/ext-folder,但后来apache说它不是PHP库.
那么如何启用PHP oracle库在x64 win7上使用oci8 for XAMPP而无需安装win32 Oracle Instant Client并破坏我当前的设置?
编辑:我也尝试过PHP:安装手册(post:samantha dot vincent at gmail dot com)中描述的步骤,包括更改我的apache-http.conf,这也没有帮助.
我也对我的phpinfo()
-Output 感到困惑
Configure Command "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"
Run Code Online (Sandbox Code Playgroud) 在我们的项目中,我们使用GIT作为SCM。通常,我们为新功能,复杂的错误修正,下一版本等创建单独的分支。当(例如)一项新功能完全实现时,它们将合并到master(这是我们的“下一个版本”分支)中(并合并到主干中,并在以后的测试/部署期间启用)。因此,在将新的功能分支合并到master后,它就是“死”了。此刻,我删除了“死”分支,以使分支列表小而清晰。但是,正如我在最后一次删除中注意到的那样,我这样做是以失去分支机构的历史为代价的。
我现在的问题是:处理“死”分支的最佳方法是什么?
在您立即将其标记为可能重复之前,请阅读整篇文章
TLDR:我正在尝试建立一个jenkins来读取私有 Github存储库.当我使用jenkins凭证时username/password
,如果我使用jenkins凭证,private key
它不会,并且我收到"无效的用户名/密码"错误.
详细描述:
tomcat8
.还安装了凭据插件(2.1.4),Git客户端插件(1.19.6),Gitplugin(2.5.2),Github API插件(1.76),GitHub插件(1.19.2),SSH凭证插件(1.12).Git在2.1.4版本中运行sudo -su tomcat8
]ssh username with private key
与全球范围内,用户名tomcat8
,密码为空和满的私钥-----BEGIN RSA PRIVATE KEY-----
来-----END RSA PRIVATE KEY-----
当我登录用户tomcat8
并使用命令通过shell检查github身份验证时,ssh -T git@github.com
我得到了正确的输出.这意味着我使用密钥对github的身份验证工作(对吧?)
tomcat8 @ ci:〜/ .ssh $ ssh -T git@github.com你好github-username!您已成功通过身份验证,但GitHub不提供shell访问权限.
Wenn我现在设置我的jenkins工作:repository URL: https://github.com/repoownername/reponame.git
并使用username/passwort-credential访问很好.但是当我使用ssh-credentials时,身份验证就会失败
无法连接到存储库:命令"git -c core.askpass = true ls-remote -h https://github.com/repoownername/reponame.git HEAD"返回状态码128:stdout:stderr:remote:用户名无效或密码.致命:" https://github.com/repoownername/reponame.git "的身份验证失败
更多信息当我使用用户名/密码凭据运行构建时
git config …