小编Jon*_*Jon的帖子

关于集合值的Hibernate标准

我正在尝试使用Hibernate组合一个复杂的查询.我一直倾向于Criteria,但我开始怀疑它不可能,所以任何建议都会有所帮助.

我有一个如下的实体结构:

public class Attribute {
    private Integer id;
    private String name;
    private Set<Value> values;
}

public class Instance {
    private Integer id;
    private int instanceRef;
    private Set<Value> values;
}

public class Value {
    private Integer id;
    private Attribute attribute;
    private String localAttributeName;
    private Instance instance;
    private String value;
}
Run Code Online (Sandbox Code Playgroud)

这些实体与您期望的相关:

value.attribute_id --> attribute.id
value.instance_id --> instance.id
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够获取一组属性/值对(字符串)并查找包含所有这些属性/值对的所有实例.在Value中,attribute和localAttributeName中只有一个是非null,因此属性名称可以匹配localAttributeName或attribute.name.最后一次使事情复杂化,Value上的唯一索引是(实例,属性,值)或(实例,localAttributeName,value) - 也就是说,在实例中,任何给定的Attribute都可能有多个值.

这是我到目前为止:

public List<Instance> getMatchingInstances(Map<String, String> attrValues) {
    Criteria crit = session.createCriteria(Instance.class, "i");
    for(Map.Entry<String, String> entry : attrValues) { …
Run Code Online (Sandbox Code Playgroud)

java orm hibernate hibernate-criteria

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

所有节点的非循环路径

是否有一种算法或一组算法可以让您找到距离任意起始节点最短的步行距离,以便每个节点都能在权重无向图中被访问?这不是旅行推销员,因为我不在乎是否多次访问一个节点.(如果你把它重新开始也没关系 - 只要它是访问所有节点所需的最后一个节点,walker就可以在一些遥远的节点结束.)它不是最小的生成树,因为它可能是A - > B - > C - > A - > D是访问A,B,C和D的(非唯一的)最短路径.我的直觉说这不是'这是一个NP问题,因为它没有限制使NP问题如此棘手.当然,我完全错了.

algorithm graph-theory graph traveling-salesman shortest-path

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

如何使用hibernate.reveng.xml更改自引用多对多集的名称?

我有一个在Oracle数据库上使用Hibernate的项目,所有实体都是在hibernate.reveng.xml文件的控制下直接从Hibernate Tools生成的.

我有一个类使用中间表与自身有多对多的关系,如下所示:

PERSON:
  ID
  ...

PERSON_PERSON:
  PARENT_ID --> PERSON.ID
  CHILD_ID  --> PERSON.ID
Run Code Online (Sandbox Code Playgroud)

没有任何特定的指令,Hibernate Tools会自动生成一个如下所示的类:

public class Person {
    private Long id;
    private Set<Person> personsForParentId = new HashSet<Person>(0);
    private Set<Person> personsForChildId = new HashSet<Person>(0);
}
Run Code Online (Sandbox Code Playgroud)

因为在编码以确定哪个是父集合以及哪个是子集时,这不是很有用,我想将它们重命名为"父母"和"孩子".

我一直在编辑hibernate.reveng.xml以试图强制它重命名该字段,但我找不到有用的东西.我不确定我是在PERSON表,PERSON_PERSON表或两者上指定更改,以及要更改哪些属性.

我习惯手动设置这些类,但是在这个项目中我无法控制构建过程,因此我必须处理Hibernate Tools生成的内容,所以我真的只需要创建Hibernate Tools做我想做的.

orm many-to-many hibernate reverse-engineering hibernate-tools

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

干净的方式来要求非Rails Ruby应用程序中的所有文件?

我正在尝试用Ruby(而不是Rails)编写游戏,以此作为一种更好地教给自己的方法.(意思是,我想这样做是正确的,但是如果我想要窃取一些不能用于Ruby的东西,我会切换语言.)我遇到了一个需要命令的问题,而我我想知道是否有一个干净的方法来做以下事情.

到目前为止,这是我的结构:

game
  Gemfile
  src
    models
      character.rb
      game_object.rb
  init.rb
Run Code Online (Sandbox Code Playgroud)

init.rb不需要单独列出每个文件,而是需要这样的文件:

  Dir['./src/**/*.rb'].each do |app|
    require app
  end
Run Code Online (Sandbox Code Playgroud)

到目前为止,game_object.rb非常简单,但是character.rb看起来像这样:

module Game
  class Character < Game::GameObject
    attr_accessor :name

    def initialize(name)
      @name = name
      end
  end
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果我这样做,我得到"未初始化的常量Game :: GameObject(NameError)",除非我在其他文件之前明确要求game_object.

在我看来,我有几个选择:

  1. 在init.rb之前加载game_object(和其他superclassees).
  2. 在character.rb中需要game_object,这似乎有问题,因为根据我使用的路径,我的理解是它可能会多次加载文件.
  3. 单独加载每个文件并完全手动管理订单,这样我就可以完全控制.

这些似乎都比它应该更复杂.有更干净的方式吗?

ruby require

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