我是嵌入式数据库的新手,但我至少运行它.令我困惑的是我的数据没有在运行之间保存.我的意思是测试不是很好吗?每次运行应用程序时,我都不想将数据添加到我的数据库中
所以我搜索了一种方法来做到这一点,我发现我将配置一个hibernate连接URL,我尝试这样做
props.put("hibernate.connection.url", "jdbc:h2:~/test");
Run Code Online (Sandbox Code Playgroud)
在我的HibernateConfiguration.java中.虽然没有成功,但没有错误但也没有保存,我没有找到应该从该URL创建的测试文件.(运行Windows并检查我的用户文件夹)
我也看到它可以像这样做
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath:db-schema.sql"/>
<jdbc:script location="classpath:db-test-data.sql"/>
</jdbc:embedded-database>
Run Code Online (Sandbox Code Playgroud)
并且每次运行应用程序时都执行脚本,但问题是我希望hibernate处理所有表的创建等.
这通常是怎么做的?
我现在搜索了几个小时,但还没有得到它.
PS.如果需要我会发布我的所有配置.
编辑: 更新了我的问题以包含对一个问题的关注并包括我的配置.
HibernateConfiguration.java包com.courseinfo.project;
import java.util.Properties;
import javax.sql.DataSource;
import org.hibernate.dialect.H2Dialect;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate3.HibernateTransactionManager;
import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;
import com.courseinfo.project.model.Course;
@Configuration
public class HibernateConfiguration {
@Value("#{dataSource}")
private DataSource dataSource;
@Bean
public AnnotationSessionFactoryBean sessionFactoryBean() {
Properties props = new Properties();
props.put("hibernate.dialect", H2Dialect.class.getName());
props.put("hibernate.format_sql", "true");
props.put("hibernate.connection.url", "jdbc:h2:~/test");
AnnotationSessionFactoryBean bean = new AnnotationSessionFactoryBean();
bean.setAnnotatedClasses(new Class[]{Course.class});
bean.setHibernateProperties(props);
bean.setDataSource(this.dataSource);
bean.setSchemaUpdate(true);
return bean;
}
@Bean
public HibernateTransactionManager …Run Code Online (Sandbox Code Playgroud) 有没有办法在流星大火中的每个块助手中访问数组索引?
我正在寻找这样的东西.
{{#each myarray}}
{{this.arrayIndex3}}
{{/each}}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个 ping 功能,用于通过蓝牙查找丢失的手机。我需要手机发出声音,即使它被设置为静音/静音,就像闹钟通常的工作方式一样。我以为我可以把streamtype我的notification,AudioManager.STREAM_ALARM但它不工作。只有当电话声音打开时才会响起。我是这样设置的:
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
builder.setSmallIcon(R.drawable.ic_spenwallet)
.setContentTitle("Ping")
.setContentText("Device is trying to find your phone.")
.setAutoCancel(false)
.setSound(sound, STREAM_ALARM)
.setVibrate(vibratePattern)
.addAction(cancelAction);
Run Code Online (Sandbox Code Playgroud)
如果我尝试:
Notification notification = builder.build();
notification.audioStreamType = AudioManager.STREAM_ALARM;
Run Code Online (Sandbox Code Playgroud)
我从 Android Studio 收到一条警告,说 audioStreamType 已被弃用。是这种情况吗?notificaiton即使打开静音模式,还有其他方法可以发出声音吗?(最好也振动)
我通过为此目的创建专用媒体播放器来使其工作,但我认为不需要这样做。无论如何,我是这样做的:
MediaPlayer mediaPlayer = new MediaPlayer();
final String packageName = getApplicationContext().getPackageName();
Uri sound = Uri.parse("android.resource://" + packageName + "/" + R.raw.ping_sound);
try {
mediaPlayer.setDataSource(this, sound);
} catch (IOException e) {
e.printStackTrace();
}
final AudioManager audioManager = …Run Code Online (Sandbox Code Playgroud) 我@RequestBody在我的方法中有一个带注释的参数,如下所示:
@RequestMapping(value = "/courses/{courseId}/{name}/comment", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody CommentContainer addComment(@PathVariable Long courseId,
@ActiveAccount Account currentUser,
@Valid @RequestBody AddCommentForm form,
BindingResult formBinding,
HttpServletRequest request) throws RequestValidationException {
.....
}
Run Code Online (Sandbox Code Playgroud)
然后我@InitBinder在同一个控制器中有一个带注释的方法:
@InitBinder
public void initBinder(WebDataBinder dataBinder) {
dataBinder.registerCustomEditor(AddCommentForm.class, new StringEscapeEditor());
}
Run Code Online (Sandbox Code Playgroud)
我StringEscapeEditor没跑.但我的initBinder方法是.所以它没有将我的表单映射到转义编辑器.这似乎是在阅读此线程后(似乎@RequestMapping不支持@InitBinder):
处理ajax请求时不调用spring mvc @InitBinder
我测试了映射@PathVariable字符串,然后我的编辑器正在工作.
这在我的应用程序中是一个大问题,因为我的大多数绑定都已完成,@RequestBody如果我可以应用一些自定义绑定,那将是很好的.
解决这个问题最常用的方法是什么?并且为了脚本攻击而逃避我的输入数据.
我有一个设计问题,我不知道如何解决.我正在使用Spring 3.2.4和Spring security 3.1.4.
我的数据库中有一个Account表,如下所示:
create table Account (id identity,
username varchar unique,
password varchar not null,
firstName varchar not null,
lastName varchar not null,
university varchar not null,
primary key (id));
Run Code Online (Sandbox Code Playgroud)
直到最近,我的用户名只是一个用户名,但我将其更改为电子邮件地址,因为许多用户想要使用该用户名登录.
我有一个标题,我在我的所有页面上都包含了一个链接到用户配置文件,如下所示:
<a href="/project/users/<%= request.getUserPrincipal().getName()%>" class="navbar-link"><strong><%= request.getUserPrincipal().getName()%></strong></a>
Run Code Online (Sandbox Code Playgroud)
问题是现在<%= request.getUserPrincipal().getName()%>返回电子邮件,我不想将用户链接到他们的电子邮件.相反,我想使用每个用户必须链接到配置文件的ID.
如何从每个页面访问用户ID?
我一直在考虑两种解决方案,但我不确定:
Account account = entityManager.find(Account.class, email);
model.addAttribute("account", account);
还有更多方法,我不知道哪个更喜欢.
我希望它足够清楚,谢谢你对此的任何帮助.
======根据回答编辑=======
我编辑了Account以实现UserDetails,它现在看起来像这样(稍后会修复自动生成的东西):
@Entity
@Table(name="Account")
public class Account implements UserDetails {
@Id
private int id;
private String username;
private String password;
private String firstName;
private …Run Code Online (Sandbox Code Playgroud) 这有点难以解释,但我会尝试.
有没有一种简单的方法可以将具有相同类的所有div的宽度设置为具有最多内容的div的宽度.
例如,如果我有三个具有相同类的div我希望它们都具有宽度最大的那个:
+------------+
|asddasadsdsa|
+------------+
|asdadsdsas |
+------------+
| |
+------------+
Run Code Online (Sandbox Code Playgroud)
或者像这样:
+---------+
|asd |
+---------+
| |
+---------+
|adsaaaaaa|
+---------+
Run Code Online (Sandbox Code Playgroud)
一种表,但在我的情况下,div分布在不同的列表中.
我正在构建一个托管在Elastic Beanstalk上的Spring Web应用程序.我使用S3存储用户上传的图像,效果很好.我不明白的是如何从S3获取图像到客户端工作.我发现了三种选择.
1.获取控制器中的图像并将其发送给客户端.像这样:
S3Object object = amazonS3Client.getObject("bucketname", "path/to/image");
Run Code Online (Sandbox Code Playgroud)
2.打开所有图像并通过客户端中的URL直接访问它.像这样的东西:
<img src="http://aws.amazon.com/bucket/path/to/image.jpg">
Run Code Online (Sandbox Code Playgroud)
3.使用仅在特定时间工作的签名下载URL.像这样:
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest("bucketname", "path/to/image");
String url = conn.generatePresignedUrl(request)
Run Code Online (Sandbox Code Playgroud)
我不知道采用哪种方法.通过Web服务器路由它似乎是不必要的,因为它加载服务器.由于任何人都可以使用图像,因此可以向任何人打开URL以获得更高的请求和成 而第三种方式对我来说是新的,没有真正看过任何人这样做,这让我感到不安全,如果真的是这样的话.
那么,这通常是怎么做的?
这是如何在开发环境和生产环境中使用的.我想它没变化?或者在开发过程中使用弹簧轮廓来改变静态内容的位置并且仅使用S3进行生产是很常见的?
如果您在S3上托管Javascript,CSS,那么最常见的是采用方法2并为每个人打开它们吗?
我可以通过编程方式为ShapeDrawable设置半径吗?
spring ×4
spring-mvc ×4
android ×2
html ×2
ajax ×1
amazon-s3 ×1
audio ×1
css ×1
h2 ×1
hibernate ×1
javascript ×1
jquery ×1
meteor ×1
meteor-blaze ×1
principal ×1
spring-data ×1