小编Luc*_*sca的帖子

JPA/Hibernate删除实体有时不起作用

我有以下通常运作良好的代码:

public void delete(T object)
{
  EntityManager em = getPersistence().createEntityManager();
  EntityTransaction et = em.getTransaction();
  try
  {
    et.begin();
    object = em.find(object.getClass(), object.getId());
    em.remove(object);
    em.flush();
    et.commit();
  }
  catch(Exception e)
  {
    error("Unable to delete " + object.toString() + ": there are references to it.");
  }
  finally
  {
    if (et.isActive()) et.rollback();
    em.close();
  }
}
Run Code Online (Sandbox Code Playgroud)

对于我的许多实体类,这只是有效的.但是对于其中两个它什么都不做,它不会抛出任何异常,也不会删除该对象.来自hibernate的日志显示hibernate执行了许多选择查询,但它甚至没有尝试执行删除.

我已经尝试过其他类似问题发现的建议在这里这里,但无济于事(当然,后者意味着@Transactional我不能使用,但我只是封闭之间的语句begin()commit()代替).

我似乎无法找到这两个类比其他类更多(或更少)的东西.它们@PrimaryKeyJoinColumn就像我拥有的​​几乎所有其他实体一样使用,它们具有@OneToMany并且@ManyToOne就像ohters一样.说实话,他们确实有一个@OneToOne(optional = false)引用另一个类的字段,而其他实体没有这个字段,但我不会经历改变那个(并因此改变数据库模式)的麻烦,除非你告诉我可能有一个原因为了它.

@OneToOne责任吗?或者我的删除代码是否被窃听?

hibernate jpa cascading-deletes

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

检查whatsapp在线状态

我被要求创建一个移动应用程序,用于检查所选 whatsapp 联系人的在线状态,并在所选联系人在线时通知用户。我认为这是可能的,因为它已经存在另一个使用相同信息的应用程序,它至少对某人有用:

https://play.google.com/store/apps/details?id=com.kiwiio.clonspy

但是,我不知道应该查询什么样的软件界面才能获得联系人的 whatsapp 在线状态。

是否有任何类型的 WhatsApp API 可以用于此目的?安卓还是IO?或两者?

android ios whatsapp

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

将Android应用程序代码交给另一个开发人员:密钥库管理

我是一名兼职自由开发者.我有自己的密钥库文件,用于签署我为客户构建的apk文件.我给我的客户提供了完整的源代码以及签名的apk文件.大多数情况下,如果不是总是,我的客户会授权我的Google帐户管理他们的Google Play开发者控制台.但是我没有把我的密钥库给我的客户("显然!"我认为).

我的一个客户,即软件公司,已将已发布应用程序的代码转移到另一个软件公司,因为最终客户决定更换供应商.我的客户还将当前发布的应用程序转移到新软件公司的Google Play帐户.新的软件公司现在需要我的密钥库来更新应用程序而不更改其ID(或者,至少,这是他们要求的).

现在问题是我的密钥库应该保持私密和安全,我不应该把它交给任何人.我可以导出我用来签署该应用程序的证书,例如:

keytool -exportcert -alias ...
Run Code Online (Sandbox Code Playgroud)

但我不知道两件事:

1)导出的证书是否足以新软件公司更新已发布的应用程序而不更改其ID?

2)我过去使用相同证书签署的其他应用程序的安全性是否仍然有效?

编辑后的Nasch评论:

为每个客户端(甚至每个应用程序)使用不同的密钥库似乎是一种合理的解决方法,但也必须存在真正的解决方案.

假设我采用了这种解决方法,当我创建一个新证书(无论是单个客户端还是单个应用程序)时,keytool会询问我的姓名和地址等问题.无论我输入我的或客户的数据,该数据将永远绑定到该证书,AFAIK.但是我不希望它也永远绑定到应用程序代码,因为我的客户端总是可以决定将该代码传输给其他人,这正是我的情况.因此,虽然为每个应用程序使用不同的证书可能在技术上解决了一些问题,但它仍然导致Software House 2使用Software House 1颁发的证书签署其代码的情况.有点奇怪.

security android export keystore

6
推荐指数
0
解决办法
944
查看次数

使用 VSCode 的 Typescript 断点

我有一个来自generator-express-no-stress-typescript模板的Yeoman脚手架项目。我需要对其进行调试,就像使用 Visual Studio Code 进行“逐步执行打字稿代码”一样(不,这对我来说还不够)。console.log()

根据文档我只需要发出

npm run dev:debug
Run Code Online (Sandbox Code Playgroud)

然后附上VSCode。问题是:如果我这样做,VSCode 将无法绑定断点。如果我让调试器在第一个执行行 ( "stopOnEntry": true) 上停止,它将停止在生成的 JavaScript 代码中,而不是源 TypeScript 代码中,并且/但选项卡标题中的文件名以斜体显示“index.ts”(不是 .js) 。

这是dev:debugpackage.json 中的脚本目标:

"dev:debug": "nodemon --exec \"node -r ts-node/register --inspect-brk\" server/index.ts | pino-pretty",
Run Code Online (Sandbox Code Playgroud)

这是我的“附加”配置launch.json

    {
        "name": "Debug (Attach)",
        "port": 9229,
        "request": "attach",
        "cwd": "${workspaceFolder}",
        "sourceMaps": true,
        "skipFiles": ["<node_internals>/**"],
        "type": "node",
        // "outFiles": ["${workspaceFolder}/dist/**/*.js"],
    },
Run Code Online (Sandbox Code Playgroud)

由于这不起作用,我尝试了其他一些教程,其中一个(我不记得是哪一个)让我将以下配置添加到我的 launch.json 中:

   {
       "name": "Run and debug",
       "program": "${workspaceFolder}/server/index.ts",
       "request": "launch",
       "skipFiles": [
           "<node_internals>/**" …
Run Code Online (Sandbox Code Playgroud)

debugging visual-studio-debugging source-maps typescript

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

Netbeans PHP调试器中的缩写值

我正在尝试调试动态创建大型SQL查询的WordPress插件.插件本身不会组装整个查询,但它会挂钩posts_clauses操作并将查询的组件发送给WP.然后WP query.php文件将它们组装在一个字符串变量中.我在插件代码中设置了一个断点,然后我逐步调用query.php并达到WP构建SQL字符串的程度.我想复制这个字符串,但是在字符串完全显示之前,Netbeans显示省略号和"缩短"这个词太久了.

我在Linux,PHP 5和xdebug上使用NB 8.2.在NB Options|PHP|Debugger选项卡中,我已经为"最大数据长度"输入了16384,我已经将以下行放入xdebug配置文件中:

xdebug.var_display_max_data=16384
Run Code Online (Sandbox Code Playgroud)

我已经重新启动了Netbeans和Apache,但问题仍然存在.显示的SQL字符串部分长度为2000个字符.

我知道我可以挂钩posts_pre_queryWP动作,并记录查询,但是,我正在调试,我不想添加丢弃的代码,迫使我在调试和测试后更改源代码...

如何让NB在调试器中显示长度超过2000个字符的PHP字符串值?

php debugging netbeans xdebug

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

:不是CSS中的选择器

我需要在HTML文档的所有元素中设置文本样式,除了嵌套在特定类中的文本.我无法控制HTML,我只能修改CSS.

这是一段代码:

<div class="container">
  <div class="column c1">
    <div class="text">
      text in column 1
    </div>
  </div>
  <div class="column c2">
    <div class="text">
      text in column 2
    </div>  
  </div>
  <div class="column c3">
    <div class="text">
      text in column 3
    </div>  
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望除text元素中的元素之外的所有元素c1都是粗体.我事先并不知道可以有多少列.

我尝试过以下使用:not选择器的CSS ,但它渲染了所有粗体:

.container {
  display: flex;
}

.column {
  padding: 0 1em;
}

:not(.c1) .text {
  font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)

为什么:not选择器不工作?我究竟做错了什么? 这是一个尝试的jsfiddle.

html css css-selectors css3

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

存储过程中的MySQL PREPARE语句

我有这个sql文件:

USE mydb;

DROP PROCEDURE IF EXISTS execSql;
DELIMITER //
CREATE PROCEDURE execSql (
                     IN sqlq VARCHAR(5000)
                      ) COMMENT 'Executes the statement'
BEGIN
  PREPARE stmt FROM sqlq;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END //
DELIMITER ;          
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时

#cat file.sql | mysql -p

我明白了

ERROR 1064 (42000) at line 6: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near 'sqlq;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt; …
Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures prepare

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

Android应用与华硕NEXUS 7不兼容

我收到了来自使用华硕Nexus 7平板电脑用户的已发布应用的反馈:Google Play商店称该应用与该设备不兼容.

我无法弄清楚为什么,我相信Nexus 7拥有应用程序所需的一切,但我显然错过了一些东西.

以下是相关的清单摘录:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx.xxxxxxxxx.xxxxxxxxxx"
    android:versionCode="3"
    android:versionName="2.1" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    <uses-feature
        android:name="android.hardware.location"
        android:required="true" />
    <uses-feature
        android:name="android.hardware.location.gps"
        android:required="false" />

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
Run Code Online (Sandbox Code Playgroud)

compatibility android google-play nexus-7

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

将 @angular/fire 从 6.x 升级到 7.x

我正在尝试将我的应用程序依赖项和代码从 @angular/fire 6.x 升级到 7.1.0-rc4 (因为我需要 7.0.x 中不存在的功能),所以我编辑了我的package.json

"@angular/fire": "~7.1.0-rc.4",
"firebase": "^9.0.0",
Run Code Online (Sandbox Code Playgroud)

然后我改变了我的进口:

import { AngularFirestore } from '@angular/fire';
Run Code Online (Sandbox Code Playgroud)

import { AngularFirestore } from '@angular/fire/compat';
Run Code Online (Sandbox Code Playgroud)

我的应用程序是 Ionic5/Angular12 应用程序,所以我假设它默认使用 Ivy。看着这里,在我看来,我已经完成了升级所需的一切。

但是我收到以下编译错误:

Module '"@angular/fire/compat"' has no exported member 'AngularFirestore'.ts(2305)
import AngularFirestore
Run Code Online (Sandbox Code Playgroud)

这是我的app.module.ts文件:

import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
import { APP_INITIALIZER, NgModule, Optional, PLATFORM_ID } from '@angular/core';
import { BrowserModule, BrowserTransferStateModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } …
Run Code Online (Sandbox Code Playgroud)

firebase typescript angularfire2 angular google-cloud-firestore

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

Gdx.net:使用RoboVM的libgdx代码中的NPE

我在使用Android / IOs应用程序时遇到问题:库代码(libgdx?)抛出NPE,但不支持在RoboVM中进行调试。在Android中运行时,它可以按预期工作并达到该handleHttpResponse()方法。当在IO中运行时,它达到t(为Throwable t)失败的方法NullPointerException。我创建了一个示例应用程序来显示问题,也许这是我的错,所以这里是代码:

public class Npe extends ApplicationAdapter {
  SpriteBatch batch;
  Texture img;

  @Override
  public void create () {
    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");
    loadHttps("https://www.google.it");
  }

  @Override
  public void render () {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    batch.draw(img, 0, 0);
    batch.end();
  }

  private static void loadHttps(String url) {
    HttpRequest httpGet = new HttpRequest(HttpMethods.GET);

    httpGet.setUrl(url);

    Gdx.net.sendHttpRequest(httpGet, new HttpResponseListener() {
      @Override
      public void handleHttpResponse(HttpResponse httpResponse) {
        String res = httpResponse.getResultAsString();
        System.err.println("res = \"" …
Run Code Online (Sandbox Code Playgroud)

java ios libgdx robovm

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