我想知道采取哪种方法来防止Hibernate4.3.4(使用Spring和HibernateVaidator)刷新脏实体。在我的代码中,我使用HibernateValidator的手动实现(实例本身中的.validate()方法),它在保存实体之前被调用。validate()方法返回错误列表(如果发现任何错误),否则调用Session.update()来存储实体,然后提交事务。这可行,但是当实例本身被操作时(在实体中设置发布/请求参数)实体和相应的Hibernatesession被标记为“脏”并且实体与下一个Session.flush()一起存储。在我的例子中,我想明确控制可能存储的实
我正在使用@NamedEntityGraph注释从数据库加载图形。@NamedEntityGraph(name="Firma.uredjivanje",attributeNodes={@NamedAttributeNode(value="prevodi",subgraph="prevodi")},subgraphs={@NamedSubgraph(name="prevodi",attributeNodes={@NamedAttributeNode(value="jezik",subgraph="jezik")})})在SpringDataJPA存储库中,我使用注释:@EntityGra
我有一个bean,我在其中为每个字段定义了多个验证注释,例如@NotEmpty@Pattern(regexp="(\\-?\\d)+")@Min(value=1)StringmyField;我遇到了两个一个我无法用任何简单方法解决的问题。每个字段的指定注释的验证顺序是随机的,即不会按照注释定义的顺序发生。我相信@GroupSequence不会有帮助,因为它只定义组验证序列,而不是注释序列。正如@Tom正确评论的那样,违规被报告为Set,这意味着注释的执行顺序与报告的违规之间没有1:1的映射。我只想使每个字段的一个规则无效,即如果它不匹配模式,请不要尝试检查该值是否>=1。目前,如果将m
我有一个名为Band的实体具有属性Listgenres,Genres是一个具有以下值的枚举:ALTERNATIVE_ROCK("AlternativeRock"),CLASSIC_ROCK("ClassicRock"),HARD_ROCK("HardRock"),HEAVY_METAL("HeavyMetal"),PROGRESSIVE_ROCK("ProgressiveRock");我正在尝试创建一个返回List的方法使用List作为使用HQL的参数,类似于:publicListlistBandsPerGenres(Listgenres);但是我收到了一些我尝试过的HQL查询错误?以
对于使用不区分大小写的数据库模式的JPA实体模型,当我使用@IdClass注释时,我始终会收到“实例标识符已更改”异常。对于主键为'string'的对象,当数据库中存在一个大小写的字符串,并使用相同的字符串进行查询,仅大小写不同时,就会出现错误。我看过其他SO答案,它们的形式是:a)不要修改主键(我没有)和b)你的equals()/hashCode()实现有缺陷。对于“b”,我尝试使用toLowerCase()和equalsIgnoringCase()但无济于事。[此外,Hibernate代码似乎是直接设置属性,而不是在发生“改变”时调用属性setter。]具体错误如下:Causedb
考虑这个场景:我已经通过hibernate加载了父实体Parent包含一个Children的集合,该集合很大且延迟加载当用户查看父数据时,初始加载后hibernatesession关闭用户可以选择查看lazyChildrenCollection的内容我现在想加载那个集合加载此集合的方式/最佳方式是什么?假设session-in-view不是一个选项,因为只有在用户查看了Parent并决定查看Children之后才会获取Children集合。这是一项可通过基于Web和桌面的客户端远程访问的服务。谢谢。 最佳答案 惰性集合可以使用Hib
我有一个网络应用程序(Tomcat6,log4j1.2.16),它以一个监听器开始。取消部署应用程序会引发以下异常:INFO(HqListener.java:28)-HqListenerexited!log4j:ERRORlog4jcalledafterunloading,seehttp://logging.apache.org/log4j/1.2/faq.html#unload.java.lang.IllegalStateException:Classinvariantviolationatorg.apache.log4j.LogManager.getLoggerRepository
我正在尝试将名为transmission_result的PostgreSQL自定义类型映射到Hibernate/JPAPOJO。PostgreSQL自定义类型或多或少是一种enum类型的字符串值。我创建了一个名为PGEnumUserType的自定义EnumUserType以及一个代表PostgreSQL枚举值的enum类。当我针对真实数据库运行它时,我收到以下错误:'ERROR:column"status"isoftypetransmission_resultbutexpressionisoftypecharactervaryingHint:Youwillneedtorewriteor
我有一个具有单向一对多关系的类,如下所示:publicclassOrder{@OneToMany(cascade=CascadeType.ALL)@JoinTable(name="order_item",joinColumns={@JoinColumn(name="order_id")},inverseJoinColumns={@JoinColumn(name="item_id")})publicSetgetItems(){returnitems;}}通常获取此订单的内容很简单:Listitems=order.getItems();但无论出于何种原因,我可能想以某种方式过滤我的结果,并
我很抱歉问这个问题,如果有人已经问过这个问题,并且问一个可能很愚蠢的问题,但我是新手,你是专家,我很乐意从你的专家建议和经验中学习。我想为每页显示200条记录的应用程序添加分页。页面底部应该有数字。如果有1050个,第一页显示100,页面底部显示数字1,2,3,4,5&6。完成此操作的一般逻辑是什么?我知道数据库每次都必须选择200,我必须跟踪第一条记录。有没有办法知道总共将返回多少条记录,以便我可以知道要在页面底部显示多少个数字?是否需要选择count()语句或其他语句?对于1050条记录,将显示数字1、2、3、4、5和6,单击每个记录都需要调用服务器。有没有办法知道下次调用服务器时