如果我有Map这样的:
HashMap<Integer, ComparableObject> map;
Run Code Online (Sandbox Code Playgroud)
我想获得一个使用自然排序排序的值集合,哪种方法最快?
创建可排序集合的实例,例如ArrayList,添加值,然后对其进行排序:
List<ComparableObject> sortedCollection = new ArrayList<ComparableObject>(map.values());
Collections.sort(sortedCollection);
Run Code Online (Sandbox Code Playgroud)
创建一个有序集合的实例TreeSet,然后添加值:
Set<ComparableObject> sortedCollection = new TreeSet<ComparableObject>(map.values());
Run Code Online (Sandbox Code Playgroud)
请注意,结果集合永远不会被修改,因此排序只需要进行一次.
有没有办法为Hibernate中的每个表指定不同的序列,如果ID是在映射的超类上定义的?
我们的应用程序中的所有实体都扩展了一个名为的超类DataObject:
@MappedSuperclass
public abstract class DataObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private int id;
}
@Entity
@Table(name = "entity_a")
public class EntityA extends DataObject { ... }
@Entity
@Table(name = "entity_b")
public class EntityB extends DataObject { ... }
Run Code Online (Sandbox Code Playgroud)
这会导致所有实体使用默认的共享序列hibernate_sequence.
我希望做的是使用一个单独的序列为每个实体,例如entity_a_sequence与entity_b_sequence上面的例子.如果在子类上指定了ID,那么我可以使用@SequenceGenerator注释为每个实体指定序列,但在这种情况下,ID在超类上.鉴于ID在超类中,是否有一种方法可以为每个实体使用单独的序列 - 如果是,那么如何?
(我们正在使用PostgreSQL 8.3,如果相关的话)
我想在使用Dojo框架的Web应用程序中实现"实时搜索"或"搜索建议"功能.这类似于Google和Bing搜索在您键入内容时显示匹配项的方式:当您在搜索框中输入时,下方会显示潜在匹配项列表.搜索将在服务器端执行,结果使用AJAX发送回浏览器.
有谁知道使用Dojo实现这个的好方法?
以下是一些潜在的选择:
内置的小部件dijit.form.ComboBox
它具有非常相似的功能,但我只看到它用于有限的数据集.示例总是使用小列表(例如美国的50个州)并预加载整个数据集以进行客户端过滤.但是,我认为我可以将它连接到dojox.data.JsonQueryRestStore进行服务器端搜索 - 任何人都可以确认这是否有效?
QueryBox http://marumushi.com/code/querybox/
这个实现主要完成这项工作,但它有一些小错误,看起来不像是在维护.在使用它之前,我必须对代码做一些错误修正.
Medryx http://blog.medryx.org/2008/09/10/dijitsearch-part-2/
这也看起来像它的工作,但它被描述为'alpha级'代码,代码的链接似乎被打破......
我可能会完成上述工作之一,但我想知道是否有更好的选择.
我有一个主视图,在主视图内部,我有另一个视图,当我单击一个按钮时,它会被创建.有没有办法在父视图上侦听从子视图触发的事件的自定义事件.我试图通过使用jQuery触发器的el属性来完成它,但这并不是很有效.
我想@Where在Hibernate中使用注释来删除已被该对象上的布尔属性标记为"已删除"的对象.例如,以下内容应该防止Hibernate加载任何已删除的地址:
@OneToMany(mappedBy="contact")
@Where(clause="deleted=FALSE")
private Set<Address> addresses;
Run Code Online (Sandbox Code Playgroud)
但是当我使用类似的子句时,deleted=FALSEHibernate将通过在其前面加上表名来破坏布尔文字,这会导致查询失败.例如:
select ... from address address0_ where ( address0_.deleted=address0_.FALSE) and address0_.contact_id=?
Run Code Online (Sandbox Code Playgroud)
我所期待的是(address0_.deleted=FALSE)代替的东西(address0_.deleted=address0_.FALSE).
有没有办法指定@Where子句或配置Hibernate以正确输出布尔值?
PS.请注意,某些数据库可以将布尔值指定为字符串文字,如下所示:
@Where(clause="deleted='FALSE'")
Run Code Online (Sandbox Code Playgroud)
这将被转换为(address0_.deleted='FALSE')可以正常工作,例如,PostgreSQL.但是我在这个项目中使用HSQLDB,而HSQLDB似乎不支持布尔字符串文字.在HSQL上,使用时会出现以下异常deleted='FALSE':
org.hsqldb.HsqlException: data exception: invalid character value for cast
我工作的项目(使用Java,Spring,Hibernate)最近从Oracle改为MySQL.在某些情况下,代码中的某些属性是MySQL中的保留字,例如"release".
有一些解决方案,1)重命名代码中的属性和后续的getter/setter方法,还更新调用这些方法的代码2)使用@Column(name ="`release`")在代码中注释属性.这告诉hibernate在与数据库交谈时引用该名称.
我宁愿远离第一种方法来减少破坏更多东西的机会.第二种方法是"ok",除了它特定于MySQL.在我们的开发中.设置我们使用HSQL,它不喜欢这些列名称的反引号.
我查看了org.hibernate.mapping.Column类,我发现它有"getQuotedName"方法,如果我可以继承Column并告诉Hibernate使用我自己的Column类,我可能会覆盖这些方法.
基于以下首选方法解决此问题的最佳方法是:a)不必重构代码库(b/c更改属性名称,getter/setter方法等)和b)希望应用程序仍然可以在HSQL中工作MySQL的.
在属性文件中具有可以切换以打开/关闭某些列命名修复的属性是合理的.这提醒我,我尝试使用自定义命名策略并覆盖"columnName"方法来围绕反引号中的列名称...这不起作用,即使在MySQL上也是如此.
我一直在使用Apache POI来操作Microsoft Word .docx文件 - 即打开最初在Microsoft Word中创建的文档,对其进行修改,将其保存到新文档中.
我注意到Apache POI创建的新段落缺少修订保存ID,通常称为RSID或rsidR.Word使用它来标识在一个会话中对文档所做的更改,例如在保存之间.它是可选的 - 用户可以根据需要在Microsoft Word中关闭它 - 但实际上几乎每个人都有它,所以几乎每个文档都充满了RSID.阅读有关RSID的这个优秀解释,了解更多相关信息.
在Microsoft Word文档中,word/document.xml包含以下段落:
<w:p w:rsidR="007809A1" w:rsidRDefault="007809A1" w:rsidP="00191825">
<w:r>
<w:t>Paragraph of text here.</w:t>
</w:r>
</w:p>
Run Code Online (Sandbox Code Playgroud)
但是,POI创建的相同段落将如下所示word/document.xml:
<w:p>
<w:r>
<w:t>Paragraph of text here.</w:t>
</w:r>
</w:p>
Run Code Online (Sandbox Code Playgroud)
我已经发现我可以强制POI使用以下代码为每个段落添加一个RSID:
byte[] rsid = ???;
XWPFParagraph paragraph = document.createParagraph();
paragraph.getCTP().setRsidR(rsid);
paragraph.getCTP().setRsidRDefault(rsid);
Run Code Online (Sandbox Code Playgroud)
但是我不知道应该如何生成RSID.
POI是否有办法或生成和/或跟踪RSID?如果没有,有什么方法可以确保我生成的RSID与文档中已有的RSID不冲突?
java ×5
hibernate ×3
hsqldb ×2
ajax ×1
apache-poi ×1
backbone.js ×1
boolean ×1
collections ×1
docx ×1
dojo ×1
javascript ×1
jquery ×1
mysql ×1
postgresql ×1
search ×1
sequence ×1
sorting ×1
spring ×1