在尝试通过REST API更新资源时,我遇到了Spring和Hibernate的错误.
我用最少的额外属性简化了案例.
我正在尝试更新名为的资源Rule.
Rule有一个ThingGroup是一组对象的表示.
Rule还有一组Event代表规则的激活范围.在执行应用程序期间,运行必须检查此事件组上的某些参数以触发警报.
我的问题是,在update下面的规则服务中使用该方法时,它会因此错误而失败.
org.hibernate.PersistentObjectException: detached entity passed to persist: com.smartobjectsecurity.common.domain.rule.Event
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:276)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:221)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:105)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy117.findOne(Unknown Source)
at com.smartobjectsecurity.common.service.thing.ThingGroupServiceImpl.find(ThingGroupServiceImpl.java:62)
at com.smartobjectsecurity.common.service.thing.ThingGroupServiceImpl.find(ThingGroupServiceImpl.java:1)
at com.smartobjectsecurity.common.service.GenericServiceImpl.find(GenericServiceImpl.java:1)
at com.smartobjectsecurity.common.service.GenericServiceImpl$$FastClassBySpringCGLIB$$daaa7267.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.smartobjectsecurity.common.service.thing.ThingGroupServiceImpl$$EnhancerBySpringCGLIB$$aa452fd7.find(<generated>)
at …Run Code Online (Sandbox Code Playgroud) 使用mapstruct,我需要的是一个具有多个源的映射方法,并且这几个源被传递给其他映射方法,这样我就可以为需要这些附加源的所有映射方法提供所有多个源。
目前有两个功能可以一起工作:
因此,功能需求是要么允许辅助源参数传递给其他映射方法,要么使 @Context 参数能够被或@Mapping(target="something", source="ctx.somethingElse")引用@Mapping(target="ctx.something", source="somethingElse)
例子 :
// source classes : `Instant timestamp` is a field I obtain separately
Instant timestamp;
class WrapperSource
List<NestedSource> nested;
class NestedSource
String name;
// target classes : I want to map the nested and name field but also to insert the timestamp in both the WrapperTarget and every NestedTarget in the nested list
class WrapperTarget
Instant timestamp;
List<NestedTarget> nested;
class NestedTarget
String name;
Instant timestamp; …Run Code Online (Sandbox Code Playgroud) 考虑到calc()CSS属性与大多数浏览器相当兼容(参见http://caniuse.com/calc),我仍然想知道它在旧浏览器中是如何降级的,特别是在Android浏览器上,因为只有最后一个版本似乎处理得好.我不太关心IE支持.
这是一个普遍的问题,但这里有一个小例子http://jsfiddle.net/7swVc/
我想知道这些属性会如何降级:
width:calc(100% - 50px);
height:calc(100% - 50px);
Run Code Online (Sandbox Code Playgroud) 在我的所有Spring REST Web应用程序中,我有很多域对象和DTO.
我需要根据发出请求的用户的spring安全角色过滤一些域对象或DTO字段.我希望Jackson根据尝试访问资源的用户的Spring GrantedAuthorities角色,过滤输出JSON以允许/禁止特定类字段序列化.
我不能为每个不同的视图组合创建新的DTO,因为它会很乱.
我找到了这个解决方案:
Spring 3.2:根据Spring Security角色过滤Jackson JSON输出
但是它不起作用,过滤器只在第一个用户登录时应用一次.然后所有其他用户获得相同的过滤,无论他们的角色是什么.
在这篇博客文章中我无法比Ray Holland更好地解释我的问题:
http://jackson-users.ning.com/forum/topics/jackson-custom-serialization
这是我试图解决的一些完全相同的问题天.
到目前为止,我找不到干净的方法.
我启用了带有弹簧安全性的CSRF,它按预期运行。
我阅读了有关CSRF的Spring官方文档 http://docs.spring.io/spring-security/site/docs/3.2.7.RELEASE/reference/htmlsingle/#csrf
我还阅读了有关使用Spring和AngularJS的CSRF的教程 http://www.codesandnotes.be/2015/07/24/angularjs-web-apps-for-spring-based-rest-services-security-the-server-side -part-2-csrf /
Spring Security所做的是为此设置了一个临时会话。所以基本上它是这样的:
- 客户端要求带有OPTIONS请求的令牌。
- 服务器创建一个临时会话,存储令牌,然后将JSESSIONID和令牌发送回客户端。
- 客户端使用该JSESSIONID和CSRF令牌提交登录凭据。
- 服务器将为接收到的JSESSIONID匹配存储的CSRF,如果全部亮起,则将创建新的最终JSESSIONID和新的基于会话的CSRF令牌,以供客户端在登录后验证其请求。
据我了解,当您未登录时,可以通过在任何API端点(例如/ api / login)上发送OPTIONS请求来获取第一个CSRF令牌
然后,Spring将创建绑定到临时会话的CSRF令牌(临时CSRF和JSESSIONID cookie)
因此,如果我问CSRF令牌而不是等待几分钟然后最终尝试登录,则CSRF令牌可能已到期,我将不得不询问另一个令牌。
我找不到如何配置Spring会话的临时过期时间,也找不到确切的默认持续时间是多少。
是否有人对此有任何信息?
我正在使用此处记录的开放遥测 Java 代理来检测 Java Spring Boot 应用程序并将跟踪导出到 Google Cloud Trace。
我的命令是:
java \
-javaagent:/opentelemetry/opentelemetry-javaagent.jar \
-Dotel.javaagent.extensions=/opentelemetry/exporter-auto-0.22.0-alpha.jar \
-Dotel.traces.exporter=google_cloud_trace \
-Dotel.metrics.exporter=none \
-jar \
/app.jar
Run Code Online (Sandbox Code Playgroud)
有用。
但是,由于我使用活性探针在 kubernetes 下部署应用程序,代理还会记录端点的跟踪/actuator/health。
我想过滤掉这些呼叫,以便代理不会记录它们并将其发送给收集器。
代理配置文档似乎没有涵盖这个用例。
是否可以通过 http 调用过滤跟踪但尚未记录?这是计划中的功能吗?
java google-cloud-platform google-cloud-trace open-telemetry
我正在尝试CSS3 @keyframes动画,但没有设法使其在Chrome中运行(目前我有Chrome 38)
代码非常简单:
的HTML
<div id="block">moving text</div>
Run Code Online (Sandbox Code Playgroud)
的CSS
@keyframes mymove
{
0% {top:0px;}
25% {top:200px;}
50% {top:100px;}
75% {top:200px;}
100% {top:0px;}
}
#block {
position:absolute;
animation: mymove 2s infinite;
}
Run Code Online (Sandbox Code Playgroud)
这是带有相同代码的小提琴。
对我来说,文本在Chrome 38中不会移动,但在Firefox 30和IE 11上效果很好。
我尝试使用,@-webkit-keyframes但是文本在Chrome中都不会移动。
我的索引已经填满了许多文件。
索引中的所有文档都有一个name字符串字段。
我想查询和更新所有具有并将其name = A设置为name = B.
为清楚起见,在 SQL 中,它类似于:
UPDATE FROM table SET name = 'B' WHERE name = 'A';
使用elasticsearch API,根据文档:https : //www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
我试过这个查询:
POST my_index/_update_by_query
{
"script": {
"inline": "ctx._source.name = 'B'",
"lang": "painless"
},
"query": {
"term": {
"name" : "A"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,它只是返回没有任何修改。我仍然可以找到 name=A 的文档,所以它们没有被编辑。
{
"took": 1,
"timed_out": false,
"total": 0,
"updated": 0,
"deleted": 0,
"batches": 0,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": …Run Code Online (Sandbox Code Playgroud) 我在 AVRO 模式中有一个枚举,如下所示:
{
"type": "record",
"name": "MySchema",
"namespace": "com.company",
"fields": [
{
"name": "color",
"type": {
"type": "enum",
"name": "Color",
"symbols": [
"UNKNOWN",
"GREEN",
"RED"
]
},
"default": "UNKNOWN"
}
]
}
Run Code Online (Sandbox Code Playgroud)
当使用 FULL (这意味着 BACKWARD 和 FORWARD)兼容模式时,我应该如何向枚举添加新符号?这不可能吗?
我读到Avro schema :向现有架构添加枚举值是否向后兼容?但这没有帮助。
每当我尝试向符号添加新值时,即使我在枚举上有默认值,它也无法在架构注册表中进行兼容性检查。经过一番测试后,似乎添加新值是向后兼容的,但不是向前兼容的。但是,由于我设置的默认值,我希望它也兼容 FORWARD。事实上,旧的读取器模式应该能够读取新模式写入的值,并且当它不知道新符号时默认为“UNKNOWN”枚举值。
我正在开发一个偶尔会在Windows计算机上运行的Java应用程序.在某些时候,我需要运行一个Cygwin提示并在其中执行一些命令.
我找到了一个使用Runtime类的主题:http: //www.javaquery.com/2011/03/how-to-execute-multiple-command-in.html
但是它没有启动真正的cmd.exe窗口,它只在后台运行,输出只是打印在Eclipse控制台上.
我正在寻找一个运行真正的cmd.exe窗口的解决方案,我需要将尽可能多的命令传递给Windows shell.这可能吗?
我有一个奇怪的错误,试图对指针向量使用for_each迭代
我想在每个指针上调用一个方法
objects_ 是类型的 vector<someClass*>
for_each(objects_.begin(), objects_.end(), std::bind1st(std::mem_fun(&someClass::someMethod), this));
Run Code Online (Sandbox Code Playgroud)
但这甚至没有编译,因为:
error C2039: 'bind1st' : is not a member of 'std'
error C2039: 'mem_fun' : is not a member of 'std'
error C3861: 'bind1st': identifier not found
error C3861: 'mem_fun': identifier not found
Run Code Online (Sandbox Code Playgroud)
然而,其他stl algortihms和方法正常工作.
我错过了什么吗?
我正在寻找一种简洁有效的方法来从使用Java 8流的子项列表中获取唯一父项列表.
对于示例,我有两个简单的类:
public class Child{
private Parent parent;
public Child(Parent parent){
this.parent = parent;
}
public Parent getParent(){
return this.parent;
}
}
public class Parent{
private List<Child> children;
public Parent(){
this.children = new ArrayList<Child>();
}
public void addChild(Child child){
this.children.add(child);
}
}
Run Code Online (Sandbox Code Playgroud)
首先,我从某种方法获得Child对象的列表.
孩子可能属于多个父母,可能有父母碰撞.
List<Child> children = getChildren();
Run Code Online (Sandbox Code Playgroud)
然后 :
List<Parent> uniqueParents = children
.stream()
.collect(Collectors.groupingBy(Child::getParent))
.keySet()
.stream()
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
所以它有效,但我想避免双流并收集.
这可能直接在一个流中吗?
我有这个仿函数类:
#include <string>
using namespace std;
class IsPlayerOfType
{
public:
IsPlayerOfType(const string& type) : type_(type) {}
bool operator()(const Player* player) const
{
return (player->getType() == type_);
}
private:
string type_;
};
Run Code Online (Sandbox Code Playgroud)
"Player"类表示具有多种方法和属性的玩家.其中,有getType()方法返回一个字符串.
在我的程序的某些时候,我有一个名为players_type 的变量vector<Player*>
最后,我有以下代码来计算我的向量中某种类型的玩家数量:
int number = count_if(players_.begin(), players_.end(), IsPlayerOfType("Defensive"));
Run Code Online (Sandbox Code Playgroud)
编译时我遇到很多错误,例如:
错误C2780:'iterator_traits <_Iter> :: difference_type std :: count_if(_InIt,_InIt,_Pr)':需要3个参数 - 提供2个参数
我不太了解count_if是如何工作的,我试着写这段代码从这个答案中激励自己:https://stackoverflow.com/a/13525420
我没有看到我错在哪里,编译器错误让我感到困惑.