小编pto*_*mli的帖子

Hibernate使用orphanRemoval触发约束违规

我在使用JPA/Hibernate(3.5.3)设置时遇到问题,我有一个实体,一个"帐户"类,它有一个子实体列表,"联系"实例.我正在尝试将Account的实例添加/删除到Account的List <Contact>属性中.

将新实例添加到集合中并调用saveOrUpdate(account)可以保持一切可爱.如果我然后选择从列表中删除联系人并再次调用saveOrUpdate,则SQL Hibernate似乎会产生涉及将account_id列设置为null,这违反了数据库约束.

我究竟做错了什么?

下面的代码显然是一个简化的摘要,但我认为它涵盖了问题,因为我在不同的代码中看到相同的结果,这真的是这个简单.

SQL:

CREATE TABLE account ( INT account_id );
CREATE TABLE contact ( INT contact_id, INT account_id REFERENCES account (account_id) );
Run Code Online (Sandbox Code Playgroud)

Java的:

@Entity
class Account {
  @Id
  @Column
  public Long id;

  @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
  @JoinColumn(name = "account_id")
  public List<Contact> contacts;
}

@Entity
class Contact {
  @Id
  @Column
  public Long id;

  @ManyToOne(optional = false)
  @JoinColumn(name = "account_id", nullable = false)
  public Account account;
}

Account account = new Account();
Contact contact = new …
Run Code Online (Sandbox Code Playgroud)

java orm hibernate jpa jpa-2.0

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

Spring @Configuration和<context:component-scan />

我有一个在嵌入式Jetty上配置Spring Security的场景,如果我使用JavaConfig来配置Jetty服务器,这似乎有点解决了.

因此,它看起来像JavaConfig而不是XML可能是项目大块的更好选择.但是,XML命名空间中存在一些细节,例如<context:component-scan />@Configuration设置中不容易获得.

我发现这ApplicationContextAware是很荣幸的@Configuration课程,所以以下是可能的

@Configuration
public class FooConfig implements ApplicationContextAware {
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        ((AnnotationConfigApplicationContext) applicationContext).scan("org.example");
    }
}
Run Code Online (Sandbox Code Playgroud)

另一种选择,这是记录在案,就是有@Configuration类使用@ImportResource注释和在现有的XML文件中提取:

@Configuration
@ImportResource("applicationContext-withComponentScan.xml")
public class BarConfig {}
Run Code Online (Sandbox Code Playgroud)

我想问题是" ApplicationContextAware以这种方式滥用是不是形式,还是真的不滥用"?对于这种方法来说,有点奇怪的是,如果春天的家伙以某种方式覆盖了这个我没有发现的东西,我也不会感到惊讶.

对于感兴趣的,这个问题涉及到扫描泽西设置有@Resource@Provider我宁愿没有在类/ XML配置手动管理项类.

java spring

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

使用JMS可以实现"公平排队"

我需要实现一个公平的排队系统,以便根据当前排队的消息中该标头的所有值,基于某些消息标头的值以循环方式处理消息.

系统中的消息自然按某些属性分组,其中有数千个可能的值,当前排队的消息的值集随时间而变化.类比将是具有标题的消息,该标题是在消息创建时的毫秒部分时间.因此,标头将具有介于0和999之间的值,并且将在当前排队的所有消息中存在值的一些分布.

我需要能够按顺序使用消息,使得没有特定值优先于任何其他值.如果排队消息的头值是这样分发的

value | count
------|-------
  A   |   3
  B   |   3
  C   |   2
Run Code Online (Sandbox Code Playgroud)

那么消费订单就是A,B,C,A,B,C,A,B.

如果将具有其他值的消息添加到队列,则应将它们自动添加到循环序列中.

这意味着对当前排队的消息有一些了解,但不要求消费者掌握这些知识; 经纪人可能有以某种方式订购交货的机制.

可以接受公平排队开始的某个阈值.也就是说,如果阈值为10,那么顺序处理具有相同值的10个消息是可接受的,但处理的第11个消息应该是顺序的下一个值.如果唯一排队的消息具有该值,则Next可能是相同的值.

可能的值的数量可能排除了简单地为每个队列创建队列,并且迭代队列,尽管尚未经过测试.

我们正在使用HornetQ,但如果有替代方案可以提供这些语义,那么我很想知道.

消息是作业,标头值是用户ID.正在寻求的是,在某些限制内,任何特定用户的任何工作都不会过度拖延任何其他用户的工作; 生成100万个作业的用户不会导致其他用户的后续作业等待处理该百万个作业.

HornetQ队列中的消费者按创建顺序进行评估,因此向队列添加选择性消费者不会阻止任何全能消费者接收与过滤器匹配的消息.

JMS组似乎没有帮助,因为它将给定的组(用户?)绑定到给定的消费者.

一个潜在的解决方案是基于需求(例如:来自同一用户10级连续的消息)在主题创建选择性的消费者,与一些管理所有选择性消费者的生命周期,以确保捕获所有不处理相同的信息.虽然可能这似乎有一些繁重的同步要求.

jms hornetq

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

重写spring-security重定向URL

我正在尝试让Tuckey UrlRewriteFilter为我的webapp整理网址.我遇到的一个问题是,当spring-security注意到匿名用户试图访问受保护资源时,它会重定向到包含servlet路径的URL.

我想要的是,例如:

> GET http://localhost:8080/my-context/protected-resource
< Location: http://localhost:8080/my-context/login
Run Code Online (Sandbox Code Playgroud)

我目前得到的是:

> GET http://localhost:8080/my-context/protected-resource
< Location: http://localhost:8080/my-context/-/login
Run Code Online (Sandbox Code Playgroud)

到目前为止我找到的相关文件:

DefaultRedirectStrategy,它执行有问题的实际重定向:http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/DefaultRedirectStrategy.html.它有一个很有诱惑力的contextRelative属性,但如果我能找到一种配置它的方法,我认为不会削减它.

一篇博文,帮助我解决了这个问题:http://nonrepeatable.blogspot.com/2009/11/using-spring-security-with-tuckey.html

我想知道的是:

  1. 可以/我应该说服Tuckey重写Location标头.<outbound-rule>似乎对此没有任何帮助.
  2. 可以/我应该以某种方式调整SS配置以发出重写的URL.我认为这不是很整洁,因为如果禁用重写就会中断.

web.xml 好像

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>LogLevel</param-name>
        <param-value>log4j</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

<servlet>
    <servlet-name>my-servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>psms</servlet-name>
    <url-pattern>/-/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

urlrewrite.xml 好像:

<urlrewrite>
    <rule>
        <from>^/(.*)$</from>
        <to>/-/$1</to>
    </rule>
</urlrewrite>
Run Code Online (Sandbox Code Playgroud)

applicationContent-security.xml 好像:

<http auto-config="true">
    <!-- allow GET …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc url-rewriting spring-security tuckey-urlrewrite-filter

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

Eclipse BIRT运行时的Maven存储库

我正在尝试找到一个maven repo,允许我将BIRT报告依赖项添加到Eclipse Dynamic Web项目中.

我发现的最接近的是http://repository.jboss.org/maven2/org/eclipse/birt/,但是当这个repo被添加到m2eclipse索引时,找不到BIRT工件.根据http://dev.eclipse.org/newslists/news.eclipse.technology.m2e/msg00389.html(我不是那里的帖子的作者,那只是我的回购链接的来源)

我正在使用或尝试BIRT 2.3.2

eclipse maven-2 birt m2eclipse

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

OSGi松耦合最佳实践

我想知道什么被认为是将应用程序代码与框架代码分离的最佳实践或模式,特别是关于OSGi.

我将使用Felix SCR页面中示例

示例服务是比较器

package sample.service;
import java.util.Comparator;
public class SampleComparator implements Comparator
{
    public int compare( Object o1, Object o2 )
    {
        return o1.equals( o2 ) ? 0 : -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码没有框架管道,它集中和简洁.在使用OSGi时,将其提供给应用程序涉及将其注册到服务注册表.如链接的Felix页面所述,一种方法是使用服务组件运行时.

// OSGI-INF/sample.xml
<?xml version="1.0" encoding="UTF-8"?>
<component name="sample.component" immediate="true">
  <implementation class="sample.service.SampleComparator" />
  <property name="service.description" value="Sample Comparator Service" />
  <property name="service.vendor" value="Apache Software Foundation" />
  <service>
    <provide interface="java.util.Comparator" />
  </service>
</component>
Run Code Online (Sandbox Code Playgroud)

Service-Component: OSGI-INF/sample.xml
Run Code Online (Sandbox Code Playgroud)

一切都很好,可爱,我的服务实现根本没有与OSGI的耦合.

现在我想使用该服务......

package sample.consumer;
import java.util.Comparator;
public class Consumer {
    public …
Run Code Online (Sandbox Code Playgroud)

java osgi design-patterns

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

使用主机和路径条件对aws_alb_listener_rule进行Terraform

AWS ALB 支持基于同一规则中的主机和路径条件匹配的规则.

您还可以创建组合基于主机的路由和基于路径的路由的规则.

我检查了控制台,UI确实允许在同一规则中选择主机和路径条件.

Terraform aws_alb_listener_rule似乎支持主机OR路径条件.

必须是一个用于基于路径路由或主机标头为基于主机的路由路径图案的.

强调我的

有没有办法对一个ALB规则进行Terraform只在请求主机名和路径都符合某些条件时触发?

amazon-ec2 amazon-web-services terraform

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

Spring的@ComponentScan excludeFilters多个过滤器

我需要从以下方式排除软件包的多种模式:

@ComponentScan(
    basePackages = "com.data",
    excludeFilters = @ComponentScan.Filter(
        type = FilterType.REGEX,
        pattern = "package.*"
    )
)
Run Code Online (Sandbox Code Playgroud)

我正在使用最新的弹簧靴。

spring-boot

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

java.lang.NoSuchMethodError: org.testng.remote.AbstractRemoteTestNG.addListener(Lorg/testng/ISuiteListener;)

运行测试用例时出现以下错误。我正在使用 testNG 最新版本,我的错误如下所示

java.lang.NoSuchMethodError: org.testng.remote.AbstractRemoteTestNG.addListener(Lorg/testng/ISuiteListener;)V
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:128)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决

testng-eclipse

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