小编bis*_*ish的帖子

从Java/JPA调用存储过程

我正在编写一个简单的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)

我注意到的事情:

  1. 参数名称对我不起作用,因此请尝试使用参数索引.
  2. 更正sql语句{call sp_name(?,?)}而不是 call sp_name(?,?)
  3. 如果存储过程返回结果集,即使您只知道一行,也getSingleResult不会工作
  4. 传递resultSetMapping名称或结果类详细信息

java sql jboss stored-procedures jpa

91
推荐指数
8
解决办法
24万
查看次数

IBM Websphere包的Maven依赖项

我正在尝试将使用IBM websphere 8.0.0.5的"经典"JAVA EE项目转换为maven多模块项目,并面临IBM家属的问题.

我们使用以下包中的IBM类:

  • com.ibm.websphere.asynchbeans
  • com.ibm.websphere.scheduler
  • com.ibm.websphere.ce.cm
  • com.ibm.ws.asynchbeans
  • com.ibm.ws.util.ThreadPool

为了编译我的本地项目,我从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 …

java maven websphere-8

7
推荐指数
1
解决办法
2万
查看次数

如何正确比较groovy中的null?

编辑:愚蠢。问题是我得到了一个值为 '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 时,比较应该有效。

comparison null groovy

6
推荐指数
1
解决办法
2万
查看次数

Maven - 将 XSD 作为依赖项

我们有一个项目定义了它使用 XSD 文件生成的消息格式。

将这些 XSD 文件作为另一个项目的依赖项的最简单方法是什么?

我正在考虑使用maven-build-helper Attach-artifact目标来附加我的 XSD 文件。

有没有更好的机制?

xsd maven-2

5
推荐指数
1
解决办法
4216
查看次数

cakePHP无法找到验证处理程序

我正在使用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)

php validation cakephp model

5
推荐指数
1
解决办法
7123
查看次数

如何提高视图层次结构和布局性能?

使用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 …

performance android lint android-layout hierarchyviewer

5
推荐指数
0
解决办法
3461
查看次数

如何避免使用Hibernate从VARCHAR到VARCHAR2的隐式类型转换?

一些同事提出了一个问题,他们认识到查询的执行时间很慢,并且发现由于隐式类型转换而未使用索引。

该表具有kgb_uuid用于存储UUID 的属性。该列定义为,VARCHAR2并在其上具有索引以通过UUID搜索行。

实体中的相关字段定义为String。根据Hibernate文档,Hibernate应该将此字符串转换为VARCHAR2Oracle数据库上的字符串,因此应使用索引。

但这不是日志显示的情况:

[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“ …

java oracle hibernate

5
推荐指数
1
解决办法
88
查看次数

如何在win7 x64上使用带有php(xampp)的oracle客户端11.2

我刚刚在我的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)

php apache oracle oracleclient oracle11g

4
推荐指数
1
解决办法
3万
查看次数

在GIT中处理“死/未使用”分支的最佳方法是什么?

在我们的项目中,我们使用GIT作为SCM。通常,我们为新功能,复杂的错误修正,下一版本等创建单独的分支。当(例如)一项新功能完全实现时,它们将合并到master(这是我们的“下一个版本”分支)中(并合并到主干中,并在以后的测试/部署期间启用)。因此,在将新的功能分支合并到master后,它就是“死”了。此刻,我删除了“死”分支,以使分支列表小而清晰。但是,正如我在最后一次删除中注意到的那样,我这样做是以失去分支机构的历史为代价的。

我现在的问题是:处理“死”分支的最佳方法是什么?

git

2
推荐指数
1
解决办法
1688
查看次数

对Github的SSH访问:shell没关系,Jenkins失败了

在您立即将其标记为可能重复之前,请阅读整篇文章

TLDR:我正在尝试建立一个jenkins来读取私有 Github存储库.当我使用jenkins凭证时username/password,如果我使用jenkins凭证,private key它不会,并且我收到"无效的用户名/密码"错误.

详细描述:

  1. 我在apache-tomcat 8上安装了jenkins 2.5,jenkins在用户下运行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版本中运行
  2. 我为用户tomcat8 创建了一个带空密码的ssh- keypair [以tomcat8身份登录sudo -su tomcat8]
  3. 我已将公钥添加到私有Github存储库
  4. 我创建了一个詹金斯凭证ssh username with private key与全球范围内,用户名tomcat8,密码为空和满的私钥-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----
  5. 我使用github帐户的普通用户名和密码创建了一个jenkins信用卡"用户名/密码".
  6. 当我登录用户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 …

authentication github jenkins

1
推荐指数
1
解决办法
1269
查看次数