我正在使用Dozer将Hibernate实体映射到他们的DTO.简化的示例类如下:
@Entity
public class Role {
@Id
@GeneratedValue
@Column(name="RoleId", nullable=false)
public int roleId;
@Column(name="RoleName", nullable=false)
@NotEmpty
public String roleName;
//get + set (not for the roleId since its autogenerated)
}
Run Code Online (Sandbox Code Playgroud)
public class RoleDTO {
private int roleId;
private String roleName;
public RoleDTO(int roleId, String roleName) {
this.roleId = roleId;
this.roleName = roleName;
}
public RoleDTO() {}
//gets + sets
}
Run Code Online (Sandbox Code Playgroud)
现在映射工作正常,但我在尝试进行更新时遇到问题.假设我的数据库中有一个角色(1,"管理员").我的视图首先使用更新的字段生成DTO:
RoleDTO roleDTO = new RoleDTO(1, "admin");
Run Code Online (Sandbox Code Playgroud)
最终,持久化角色的类接收DTO并通过Dozer将其转换为Entity类以保留更改:
Role role = DozerMapper.map(roleDTO,Role.class);
Run Code Online (Sandbox Code Playgroud)
此时,我的角色实体已丢失其ID,可能是因为ID列被定义为自动增量,我显然无法更新null-ID实体.
那么我应该如何处理这个问题,以便ID和更新的字段全部映射到实体?我总是可以使用hibernate来实现实体对象,并使用DTO中的每个字段更新它们并将其保存回来,但它会破坏使用Dozer的整个目的.
谢谢你的帮助.
我们有来自数据库的HTML,我们想用这个HTML创建一个Word报告.此HTML来自用户,可能只包含格式化文本(粗体,斜体...),或以base64方式编码的文本+嵌入图像.
例:
<b>My photo :</b>
<img src="data:image/png;base64,iVBORw0K... " />
Run Code Online (Sandbox Code Playgroud)
我们知道,使用textField,markup="html"它不适用于imghtml标签.使用Jasper Studio 6.3.1,我们尝试使用<hc:html/>,它适用于硬盘驱动器上的图像,但它不适用于嵌入式图像,说base64加密有语法错误.
jrxml文件:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="StylesReport" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" uuid="53f914b8-f951-4433-971d-6b1819430c56">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<property name="net.sf.jasperreports.export.html.embed.image" value="true"/>
<import value="org.apache.commons.codec.binar.*"/>
<title>
<band height="742">
<textField hyperlinkType="Reference" hyperlinkTarget="Blank">
<reportElement x="0" y="30" width="515" height="30" uuid="c2015c9b-9130-4f39-a09e-c341c91d3794"/>
<textElement textAlignment="Center">
<font size="18"/>
</textElement>
<textFieldExpression><![CDATA["HTML Element Report"]]></textFieldExpression>
</textField>
<componentElement>
<reportElement x="0" y="100" width="230" height="110" backcolor="#ADD8E6" uuid="332dd551-e8cd-4cb0-a11f-7325f481017b"/>
<hc:html xmlns:hc="http://jasperreports.sourceforge.net/htmlcomponent" …Run Code Online (Sandbox Code Playgroud)