小编Gui*_*ume的帖子

DTO使用Java,Dozer和Hibernate映射和更新到数据库

我正在使用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的整个目的.

谢谢你的帮助.

java hibernate dto dozer

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

如何使用html组件导出包含嵌入图像(base64,data uri)的HTML文本?

我们有来自数据库的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)

java base64 image jasper-reports

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

标签 统计

java ×2

base64 ×1

dozer ×1

dto ×1

hibernate ×1

image ×1

jasper-reports ×1