我正在使用java 2 ee开发一个Web应用程序.我也使用hibernate和mysql.为了恢复备份文件,在我的应用程序的某些时候我需要删除当前数据库并重新创建它,我按如下方式执行:
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=user&password=pass");
Statement statement = (Statement) conn.createStatement();
statement.executeUpdate("DROP DATABASE tcs;");
statement.executeUpdate("CREATE DATABASE tcs charset=utf8 collate=utf8_persian_ci;");
Run Code Online (Sandbox Code Playgroud)
删除并重新创建后我需要使用默认用户初始化数据库(spring security user)
User admin = new User();
UserAuthority ROLE_USER = new UserAuthority("ROLE_USER");
ROLE_USER.save();
admin.addUserAuthority(ROLE_USER);
admin.setEnabled(true);
admin.save();
Run Code Online (Sandbox Code Playgroud)
但在最后一行应用程序抛出此异常
Hibernate: insert into roles (authority) values (?)
[DEBUG][16:19:17,734] [http-bio-8080-exec-10] NewPooledConnection:367 com.mchange.v2.c3p0.impl.NewPooledConnection@bcbe33a handling a throwable.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tcs.roles' doesn't exist
Run Code Online (Sandbox Code Playgroud)
我知道hibernate在启动时会创建表,但在这种情况下,它无法在删除/重新创建后重新创建表,那么我如何强制hibernate再次创建表?或假设有类似的东西Hibernate.createTable(Class)?
当我们开始开发应用程序时,我们使用包在逻辑上组织我们的类,并且几乎总是有一个称为domain的包(如com.raysis.reportgen.domain)。我的问题是,我们应该在包装中放什么?不应该放什么?是否有标准定义或仅与程序员的品味有关?
之前,我在这里阅读过一些内容:什么是Java域模型?
我已经按照这个链接向我的jasper报告项目中添加了字体,但是在尝试构建报告时我得到了这个异常,这个异常意味着什么?我找不到任何解决方案.请注意我正在尝试添加 Ubuntu-LI字体
17:26:35-218 - - raysis.rohani.rg.report.builder.ReportBuilder.show(120) - error in showing the jasper report (called from ReportBuilder)
net.sf.jasperreports.engine.JRRuntimeException: java.awt.FontFormatException: bad table, tag=1196445523
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:104)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:128)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.getInstance(SimpleFontFace.java:67)
at net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:99)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:261)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamilies(SimpleFontExtensionHelper.java:232)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:193)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:162)
at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:56)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:110)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.getExtensions(DefaultJasperReportsContext.java:246)
at net.sf.jasperreports.engine.fonts.FontUtil.getFontInfo(FontUtil.java:185)
at net.sf.jasperreports.engine.fonts.FontUtil.getAwtFontFromBundles(FontUtil.java:245)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFont(StyleResolver.java:96)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFont(StyleResolver.java:71)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFontHeight(StyleResolver.java:52)
at net.sf.dynamicreports.design.transformation.TemplateTransform.getTextFieldHeight(TemplateTransform.java:967)
at net.sf.dynamicreports.design.transformation.ComponentTransform.textField(ComponentTransform.java:332)
at net.sf.dynamicreports.design.transformation.ComponentTransform.component(ComponentTransform.java:152)
at net.sf.dynamicreports.design.transformation.ComponentTransform.list(ComponentTransform.java:285)
at net.sf.dynamicreports.design.transformation.BandTransform.band(BandTransform.java:184)
at net.sf.dynamicreports.design.transformation.BandTransform.transform(BandTransform.java:74)
at net.sf.dynamicreports.design.base.DRDesignReport.transform(DRDesignReport.java:135)
at net.sf.dynamicreports.design.base.DRDesignReport.<init>(DRDesignReport.java:107)
at net.sf.dynamicreports.design.base.DRDesignReport.<init>(DRDesignReport.java:99)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperReportDesign(JasperReportBuilder.java:261)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.getJasperParameters(JasperReportBuilder.java:288)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperPrint(JasperReportBuilder.java:299) …Run Code Online (Sandbox Code Playgroud) 让我用代码解释一下:
public interface A {}
public enum B implements A{}
public enum C implements A{}
@Entity
@Table(name = "land")
public class D extends ABSDBOperations {
private A a;
public A getA(){
return a;
}
public void setA(A a){
this.a=a;
}
}
Run Code Online (Sandbox Code Playgroud)
我应该使用上面的注释getA()来保持a属性?
String myText;
UUID.nameUUIDFromBytes((myText).getBytes()).toString();
Run Code Online (Sandbox Code Playgroud)
我使用上面的代码来生成特定文本的代表。例如,“Moien”应始终用“e9cad067-56f3-3ea9-98d2-26e25778c48f”表示,项目重建等任何更改都不应更改该 UUID。
我这样做的原因是我不希望这些特定的文本对人类来说是可读的(可理解的)。
注意:我不需要在散列后重新生成主要文本(例如“Moien”)的能力。
我也有一个替代方法:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest((matcher.group(1)).getBytes("UTF-8"));
String a = Base64.encode(hash);
Run Code Online (Sandbox Code Playgroud)
您认为哪一个更适合我的问题?
由于某些原因(不是本文的关注点),Amazon S3并不是Maven存储库的理想主机。所以我要在本地计算机上构建我的Maven应用程序,并在某些时间点上(例如每两天左右),使用aws s3 cp命令将整个层次结构复制到Amazon S3 。说我复制com文件夹,就像:
com
-raysis
--rayProduct
---1.0-SNAPSHOT
----rayray.jar
Run Code Online (Sandbox Code Playgroud)
问题是已创建的元数据文件是maven-metadata-local.xml(因为我已经在本地构建了它,这似乎是合理的),但是当我将其上传到S3并尝试通过maven进行获取时,它抱怨说没有maven-metadata.xml。所以我怎么能强制(或优雅地要求)maven创建maven-metadata.xml代替/与maven-metadata-local.xml一起?由于Maven元数据内部没有特定于位置的数据,因此移动似乎不容易。
注意:我正在尝试从S3加载以下依赖项(我也添加了存储库):
<dependency>
<groupId>com.raysis</groupId>
<artifactId>sense-lib</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud) 我有这张地图:
Map<Owner, Integer> ownerSharesMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
我知道如何在地图上HashMap用@OneToMany,有一个基本类型为重点的关系,但我GOOGLE了很多,并没有找到一个方法来映射上面HashMap使用JPA.我看到两个选择:
将我HashMap改为:(其中uuid是关键列Owner)
Map<UUID, Integer> ownerIdSharesMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
或者创建一个这样的类:
public class Share{
int count;
Owner owner
}
Run Code Online (Sandbox Code Playgroud)
然后坚持这个集合:
Set<Share> shares;
Run Code Online (Sandbox Code Playgroud)
你有什么建议?有没有办法用JPA注释第一个Map,还是应该使用后面的解决方案?
请注意,在我的项目中,查询性能是主要问题,但我也想要干净的OOD.
谢谢.
我正在使用JasperReports和DynamicReports与这段java代码创建一个pdf格式的报告,其中包含utf-8字符,生成的问题pdf文件根本不包含utf-8字符,如果它们已被替换为" ".使用OutputStream创建utf-8文件时,我应该注意什么?
public void toPdf(String path){
OutputStream outHtml;
try {
outHtml = new FileOutputStream(path);
jasperBuilder.toPdf(outHtml);
} catch (Exception e1) {
logger.error("failed to create PDF", e1);
}
}
Run Code Online (Sandbox Code Playgroud)
这可能是值得注意的是,创建XLS和HTML文件不会面临这样的问题.
请注意,jasperBuilder.toPdf(outHtml);我已经跟踪了很多代码行,并且没有在这些行中我的utf-8字符被删除.所以我猜魔鬼在outHtml = new FileOutputStream(path);
@Named("myUniqueName")
public class ReportDashboardDao implements DashboardDAO{
//STUFF
}
Run Code Online (Sandbox Code Playgroud)
当我像这样注入 DashboardDAO 时,如何访问 @Named 标签内的字符串:
@Named
public class DshboardDaoConsumer(){
@Inject List<DashboardDAO> dashboardDAO;
//STUFF
}
Run Code Online (Sandbox Code Playgroud) 我用谷歌搜索了"轻量级ORM for j2ee"这个短语,并从其中一个结果中找到了这个页面http://java-source.net/open-source/persistence.我的目标是找到一个比Hibernate更轻的ORM框架,并提供一些对我来说最重要的休眠功能,例如:自动表生成和延迟初始化,并且不会给我带来表和地图的困难.采集.同样重要的是,即将到来的ORM周围有一个社区,这使得找到错误和错误的解决方案变得更快.并且重要的是新的orm从我这里隐藏数据库(需要更少的sql技能并且更多OO).到目前为止,我已经缩小了对iBatis(myBatis)和ORMLite的选择范围.我希望这个ORM用于我的新项目,这是一个j2ee中的桌面应用程序,所以重要的是这个orm的启动时间要少于其他人(不像Hibernate,因为Hibernate需要花费很多时间才能第一次运行,特别是当你有很多表)
日Thnx