小编los*_*rje的帖子

sqlalchemy id等同于引用相等

我第一次使用SQLAlchemy并且想知道......一般来说,在使用SQLAlchemy vs id(主键)相等时,依赖python的默认等式语义是否足够?

在我以前使用ORM技术(如Java的Hibernate)工作的其他项目中,我们总是覆盖.equals()以检查对象的主键/ id是否相等,但是当我回头看时我不确定这个总是必要的.

在大多数情况下(如果不是所有情况)我都能想到,您只有一个具有给定id的给定对象的引用.并且该对象始终是附加对象,因此从技术上讲,您可以通过引用相等而逃脱.

简短的问题:在使用SQLAlchemy时,我是否应该为我的业务实体重写eq()和hash()?

python sqlalchemy

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

在Hibernate验证期间执行EntityManager查询的正确方法

我是一个Java EE/EJB noob,但是从我收集的文档和其他帖子中,您无法在实体验证期间使用相同的entitymanager/session查询数据库.

通常,可移植应用程序的生命周期方法不应调用EntityManager或Query操作,访问其他实体实例或修改同一持久化上下文中的关系.[43] 生命周期回调方法可以修改调用它的实体的非关系状态.

翻译好吗?

这很抽象......可以用更具体的术语来解释吗?它导致的问题多于答案.例如,如果我的实体有一个延迟加载的集合,我可以在验证期间访问它吗?该集合是"另一个实体",需要数据库查询,这似乎违反了文档.

这种"生命周期要求"似乎很奇怪,因为某些验证确实需要查询数据库才是生活中的事实.

从其他帖子我也看到人们通过使用entitymanagerfactory创建一个新的entitymanager/session来解决这个查询问题.

这引出了两个关于使用EntityManagers和Hibernate验证的问题:

  1. 是否有可能出现某种设计缺陷或滥用Hibernate验证,因为我需要在验证期间查询数据库?
  2. 鉴于我在JBoss中使用Java EE,如何使用EntityManagerFactory注入验证器?

我尝试过这样的事情:

@Stateless
public class UserValidator implements ConstraintValidator<ValidUser, User> {
    @PersistenceUnit(unitName="blahblah")
    EntityManagerFactory emf;

    ...
}
Run Code Online (Sandbox Code Playgroud)

但EMF永远不会注入.我猜测@Stateless标签变得无关紧要,因为我正在实现一个ConstraintValidator接口,这是Hibernate Validator工作所需要的.

那么从Validator获取EntityManagerFactory的一般模式是什么?

谢谢!

hibernate entitymanager java-ee hibernate-validator

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

Eclipse Luna(4.4.0)和Subclipse无法正常工作

我知道有很多关于javahl问题的Eclipse/Subclipse问题.我一直在使用Eclipse/Subclipse很长一段时间没有javahl问题.

我现在遇到了同样的问题.

我刚刚升级到Java 7:

$ java -version
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我还升级到Eclipse Luna 4.4.0并安装了Subclipse.但是在创建远程存储库并尝试在SVN Repository Exploring透视图中浏览它之后,我在Eclipse .log错误日志文件中看到了这一点:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.subversion.javahl.SVNClient
    at org.tigris.subversion.svnclientadapter.javahl.JhlClientAdapter.<init>(JhlClientAdapter.java:57)
    at org.tigris.subversion.clientadapter.javahl.Activator.getAdapter(Activator.java:64)
    at org.tigris.subversion.clientadapter.Activator.getClientAdapter(Activator.java:70)
    at org.tigris.subversion.subclipse.core.SVNClientManager.getAdapter(SVNClientManager.java:127)
    at org.tigris.subversion.subclipse.core.SVNClientManager.getSVNClient(SVNClientManager.java:94)
    at org.tigris.subversion.subclipse.core.SVNProviderPlugin.getSVNClient(SVNProviderPlugin.java:462)
    at org.tigris.subversion.subclipse.core.repo.SVNRepositoryLocation.getSVNClient(SVNRepositoryLocation.java:257)
    at org.tigris.subversion.subclipse.core.resources.RemoteFolder.getMembers(RemoteFolder.java:164)
    at org.tigris.subversion.subclipse.core.resources.RemoteFolder.members(RemoteFolder.java:260)
    at org.tigris.subversion.subclipse.ui.operations.FetchMembersOperation.execute(FetchMembersOperation.java:41)
    at org.tigris.subversion.subclipse.ui.operations.SVNOperation.run(SVNOperation.java:90)
    at org.tigris.subversion.subclipse.ui.repository.model.SVNRepositoryRootElement.fetchDeferredChildren(SVNRepositoryRootElement.java:73)
    at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:238)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Run Code Online (Sandbox Code Playgroud)

请参见下面的图片,查看我使用Subclipse安装的组件:

Subclipse安装

关于SVNKit客户端适配器(不需要),我已经安装了Subclipse,无论是否选择了这个组件,在这两种情况下我都看到了相同的javahl.SVNClient错误.

我该如何解决这个问题?

顺便说一句,我想也许我会给Subversive一个机会.Eclipse 4.4 udpates软件站点(http://download.eclipse.org/eclipse/updates/4.4)中没有Subversive,所以我尝试了Eclipse Marketplace Client.通过市场安装我收到以下错误:

The following solutions are not …
Run Code Online (Sandbox Code Playgroud)

java eclipse subclipse svn eclipse-plugin

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

为什么Object.keys()和...在不同的?

我正在尝试做一些浏览器对象发现,搞清楚浏览器内置等...

当我试图获取窗口对象的属性时,我注意到了不同的结果(仅供参考,我使用的是Chrome版本41.0.2272.89(64位)).

Object.keys(window).length;
Run Code Online (Sandbox Code Playgroud)

返回7个键.从文档Object.keys()返回对象的可枚举属性.

但是文档也说for ... in迭代了对象的可枚举属性.然而:

    var i = 0;
    for (var propertyName in window) {
        i++;
    }
Run Code Online (Sandbox Code Playgroud)

返回177的计数.

为什么会有所不同?他们不应该只返回可枚举属性的数量吗?

javascript

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

Hibernate SchemaExport无法首先创建模式

我正在使用Arquillian,JBoss,JPA/Hibernate,H2 DB和Maven运行测试.在我的测试persistence.xml文件中,我有:

<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="true" />
Run Code Online (Sandbox Code Playgroud)

现在我有一个User类通过Hibernate注释映射到'users'表.

事情几乎正常.问题是Hibernate试图执行:

drop table my_schema.users if exists
Run Code Online (Sandbox Code Playgroud)

但架构"my_schema"不存在,因此失败(毕竟我正在对内存数据库运行).

如何让hibernate执行似乎忘记的'create schema my_schema'步骤?

更新: 我从Hibernate看到的消息:


09:42:45,402 INFO  [org.jboss.as.jpa] (MSC service thread 1-7) JBAS011402: Starting Persistence Unit Service 'test.war#ccmc'
09:42:45,524 INFO  [org.hibernate.annotations.common.Version] (MSC service thread 1-7) HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
09:42:45,532 INFO  [org.hibernate.Version] (MSC service thread 1-7) HHH000412: Hibernate Core {4.0.1.Final}
09:42:45,535 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-7) HHH000206: hibernate.properties not found
09:42:45,542 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-7) HHH000021: Bytecode provider …
Run Code Online (Sandbox Code Playgroud)

jboss hibernate hbm2ddl java-ee-6 jboss-arquillian

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

解决$ rootScope:infdig Infinite $ digest循环

我得到了无限摘要循环的基本概念以及它是如何发生的,但我遇到了问题.这是一个演示我的代码和问题的小提琴:

http://jsfiddle.net/eS5e5/1/

在jsfiddle控制台中,您将看到无限的摘要循环.

基本上我必须对可能尚未加载的数据做出决定,所以我需要等待使用then()解析的承诺.我有一个叫做用户的承诺.代码中有两个不同的地方,我在用户上调用then().

  1. 就在我定义它之后.我需要根据它设置范围变量.
  2. 在另一个范围方法中,$ scope.isAdmin()

对于数字2,可能会问为什么我不直接在$ scope.isAdmin()方法中使用$ scope.user.问题是,在用户的异步请求返回之前,可以调用$ scope.isAdmin(),在这种情况下,我需要在从$ scope.isAdmin()返回之前"阻塞".

我的问题是,$ scope.isAdmin()是什么让角度认为"观察"变量已经改变并且摘要周期需要再次运行?

$ scope.isAdmin()实际上并没有改变任何东西.

这是精简代码:

HTML:

<body ng-controller='myController'>  
  <div ng-if='isAdmin()'>Hi! <strong>{{ user.username }}</strong> is an Admin!!!</div>
  <div ng-if='!isAdmin()'>Hi! <strong>{{ user.username }}</strong> is NOT an Admin!!!</div>
</body>
Run Code Online (Sandbox Code Playgroud)

和JS:

angular.module('myApp', [])
  .factory('myService', function($q, $timeout) {
    return {        
      getUser: function() {
        var deferred = $q.defer();

        $timeout(function() {
          deferred.resolve({ username: 'me', isAdmin: true });
        }, 2000);

        return deferred.promise;
      }
    };
  })
  .controller('myController', function($scope, $q, myService) {      
    var getUserDeferred = $q.defer();
    var user …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs q angular-promise

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

为什么需要在角度中使用“超时”

这可能是一个全新的问题......抱歉,但我无法理解它。

在许多角度文档/示例中,我看到包含在“超时”块中的异步函数。许多都包含在 setTimeout() 中并且需要显式使用

if (!$scope.$$phase) {
    $scope.$apply();
}
Run Code Online (Sandbox Code Playgroud)

鉴于 angular 提供了 $timeout,上面的代码似乎已经过时或错误,在 angular 内,应该始终首选使用 $timeout。不过,我离题了。

以下是一些示例代码的片段:http : //markdalgleish.com/2013/06/using-promises-in-angularjs-views/

var myModule = angular.module('myModule', []);
// From this point on, we'll attach everything to 'myModule'

myModule.factory('HelloWorld', function($timeout) {
  var getMessages = function(callback) {
    $timeout(function() {
      callback(['Hello', 'world!']);
    }, 2000);
  };

  return {
    getMessages: getMessages
  };
});
Run Code Online (Sandbox Code Playgroud)

我在任何与异步调用相关的超时块中都看到了这种代码包装。但是有人可以解释为什么需要这样做吗?为什么不把上面的代码改成:

var myModule = angular.module('myModule', []);
// From this point on, we'll attach everything to 'myModule'

myModule.factory('HelloWorld', function() {
  var getMessages = function(callback) { …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

让 sqlalchemy 视图反射在 Flask-sqlalchemy 中工作

Flask-SQLAlchemy 对 SQLAlchemy 反射的支持似乎不太适合我。我有一个观点my_view想通过 进行反思autoload

但我想my_view成为一个丰富的对象并具有各种功能,所以我想my_view子类化db.Model。我希望它像任何其他非视图的数据库模型一样工作。

我这样做:

class MyView(db.Model):
    __tablename__ = 'my_view',
    __table_args__ = (
        db.UniqueConstraint('id', 'start_date'),
        {
            'autoload': True,
            'autoload_with': db.engine
        }
    )

    ...my column defs...

    ...extra functionality...
Run Code Online (Sandbox Code Playgroud)

但在应用程序引导期间我收到错误:

<snip>
File "env/lib/python3.4/site-packages/sqlalchemy/dialects/postgresql/base.py", line 2325, in get_columns
info_cache=kw.get('info_cache'))
File "<string>", line 2, in get_table_oid
File "env/lib/python3.4/site-packages/sqlalchemy/engine/reflection.py", line 54, in cache
ret = fn(self, con, *args, **kw)
File "env/lib/python3.4/site-packages/sqlalchemy/dialects/postgresql/base.py", line 2223, in get_table_oid
    raise exc.NoSuchTableError(table_name)
sqlalchemy.exc.NoSuchTableError: ('my_view',)
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用它db.Table而不是db.Model …

python sqlalchemy flask flask-sqlalchemy

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

HttpClient Angular 4.4.3 CSRF和CORS

CORS设置如何与Angular的XSRF保护一起使用?绝对URL只是被忽略,但我也需要XSRF来处理绝对URL.这不应该配置HttpClientXsrfModule.withOptions()吗?这似乎是代码中的疏忽.

具体来说,我在Angular代码中看到了这一点:

https://github.com/angular/angular/blob/master/packages/common/http/src/xsrf.ts#L77-L84

// Skip both non-mutating requests and absolute URLs.
// Non-mutating requests don't require a token, and absolute URLs require special handling
// anyway as the cookie set
// on our origin is not the same as the token expected by another origin.
if (req.method === 'GET' || req.method === 'HEAD' || lcUrl.startsWith('http://') ||
    lcUrl.startsWith('https://')) {
  return next.handle(req);
}
Run Code Online (Sandbox Code Playgroud)

csrf cors angular

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

使用 ts-node 时通过 fork() 调用子进程

我有一个打字稿项目,而不是tsc首先使用,我只是ts-node直接运行通过。

在我的代码中,我需要使用fork().

如果我喜欢运行的代码child_process.fork('ChildProcess.ts'),并ChildProcess.ts包含一些打字稿只有结构(如:import {}export,...),然后解释之中node,而不是ts-node将失败。

可能建议使用类似的东西child_process.exec('node ./node_modules/.bin/ts-node ChildProcess.ts),但我真的想要/需要在父进程和子进程之间设置的 IPC 通信通道,当fork()专门使用时。

关于如何实现这一目标的任何想法?

谢谢!

child-process node.js typescript ts-node

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