我正在使用mapstruct,我想知道是否有任何方法可以为某些目标属性设置空值。例如
public class MySource {
private String prop1;
private String prop2;
public MySource() {
// Initialization.
}
// Getters - Setters.
}
public class MySourceDto {
private String prop1;
private String prop2;
public MySourceDto() {
// Initialization.
}
// Getters - Setters.
}
@Mapper
public interface MySourceMapper {
@Mappings({
@Mapping(target = "prop1", propertyToSetNull = null)})
public MySourceDto toView(MySource mySource);
}
我希望上面的源代码、dto和mapper能够生成下面的源代码,
@Component
public class MySourceMapperImpl implements MySourceMapper {
@Override
public MySourceDto toView(MySource mySource) {
if ( mySource == null ) {
return null;
}
MySourceDto mySourceDto = new MySourceDto();
mySourceDto.setProp1( mySource.getId() );
mySourceDto.setProp2( null );
return mySourceDto;
}
}
此外,您可以忽略此属性的映射:
@Mapping(target = "prop1", ignore = true)
这会将该值设置为默认值,在您的情况下为null
您可以使用@Map(Target="prop1",表达式="java(null)")
来实现这一点。
您可以在此处的参考指南中找到有关expression的更多信息。
目前,只有java支持作为表达式语言,MapStruct只需将您在括号中编写的内容直接应用于setter,实现将与您的示例完全相同。
问题内容: 我正在使用JSF2.0创建Web应用程序,其中在mysql中,我使用的数据类型为存储图像。 要插入值,我正在使用PreparedStatement,如下所示。 但是我收到错误消息 Stacktrace的某些部分是 我相信以上错误仅供参考 我的问题是如何将二进制数据设置为Null或Nothing? 问题答案: 这些天出了什么问题?我问了问题后就得到了解决方案:( 做到了。
问题内容: 我有以下映射 我如何配置我的Mapper或Mappings,以便当childId为null时,将目标Entity.child设置为null而不是Entity.child.id? 问题答案: 对于我来说,找到的不是一个非常优雅的解决方案,而是可行的解决方案。 首先将接口更改为抽象类,然后添加
问题内容: 我正在使用Spring将JMS连接工厂注入到我的Java应用程序中。由于仅在生产环境中才需要该工厂,但是在开发过程中却不需要,因此我将Bean定义放入单独的XML中,并将其包含在主applicationContext.xml中。在生产环境中,此额外文件包含常规bean定义。在我的本地开发环境中,我希望此bean为null。当Spring遇到一个未知的引用ID时,试图完全完全删除Bean
问题内容: 使用Zend_Db执行UPDATE和INSERT查询时,我经常需要设置等于NULL的值(不是”)。但是,Zend_Db :: insert()和Zend_Db :: update()的默认行为似乎是将空值转换为空字符串(’‘)并照此放入数据库。 有谁知道如果php中的值为空,则实际上强制将NULL值放入字段的方法吗? 问题答案: 尝试将受影响的字段设置为:
我一直在使用空布局,很多人会说不应该这样做。有更好的办法吗? 以下是一些代码示例:
编辑2: 似乎调用实际上是在取消数据库中的字段!但是,调用并没有像预期的那样用空字段刷新POJO。我在之后验证了lastName的为null,但是调用没有使该值为null。