小编mel*_*lik的帖子

Spring - Transaction Readonly

只想要你对Spring的声明式事务管理的专家意见.这是我的设置:

  1. DAO层是使用Spring JdbcTemplate(No Hibernate等)的普通旧JDBC
  2. 服务层是具有声明性交易的POJO,如下所示 - save*, readonly = false, rollback for Throwable

通过以上设置,工作正常.但是,当我说get*, readonly = true,我看到我的日志文件中的错误说Database connection cannot be marked as readonly.对于服务层中的所有get*方法都会发生这种情况.

现在我的问题是:

A.我必须设置get*为只读吗?我的所有get*方法都是纯读取DB操作.我不希望在任何事务上下文中运行它们.上述错误有多严重?

B.当我删除get*配置时,我没有看到错误.更重要的是,我所有的简单get*操作都是在没有交易的情 这是要走的路吗?

C.为什么有人想要交易方法在哪里readonly = true?这种配置有什么实际意义吗?

谢谢!一如既往,非常感谢您的回复!

java spring transactions readonly

23
推荐指数
2
解决办法
2万
查看次数

在Java中修改现有文件内容

我想替换第二行文件内容,请基于以下文件格式和监听器方法请有人帮忙.

1324254875443
1313131
Paid
0.0
Run Code Online (Sandbox Code Playgroud)

第二行很长,想要替换currentTimeMillis().

/************** Pay Button Listener **************/
public class payListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {

        ArrayList<String> lines = new ArrayList<String>();
        String line = null;

        try {
            FileReader fr = new FileReader("Ticket/" + ticketIDNumber + ".dat");
            BufferedReader br = new BufferedReader(fr);
            FileWriter fw = new FileWriter("Ticket/" + ticketIDNumber + ".dat");
            BufferedWriter bw = new BufferedWriter(fw);
            while ((line = br.readLine()) != null) {
                if (line.contains("1313131"))
                    line.replace(System.currentTimeMillis();
                lines.add(line);
                bw.write(line);
            }  //end if                 

        }     //end …
Run Code Online (Sandbox Code Playgroud)

java replace file

21
推荐指数
2
解决办法
8万
查看次数

在MySQL数据库中存储枚举

对于我的案例,我需要最干净,最有效的解决方案.我正在尝试将学生的Marks存储在MySQL DB中.学生可能是"缺席"或"复制案例",我想在DB中存储此类信息.

我想为上面的情况分配代码,例如-1为ABSENT,-2为COPY CASE等.这些代码将仅存储在Marks列中.

以往更多,而与选择查询读取它们,我应该得到它们的显示值,即ABSENT,COPY CASE等只.

所有这些只能在DB端实现吗?

或者我是否只需要在应用程序级别实现这些功能?

是否有可用于Java的API用于此类功能?

java mysql enums database-design

6
推荐指数
2
解决办法
8565
查看次数

hbm 文件中的 select 语句中的函数“right”出错

我在休眠 hbm 文件中收到以下语句的错误:

...
<subselect>
   <![CDATA[
      select t.colA, right(t.colB, 12) b
   ]]>
</subselect>
...
Run Code Online (Sandbox Code Playgroud)

错误是 Caused by: java.sql.SQLException: ORA-00904: "RIGHT": invalid Identifier

数据库:Oracle 11g Hibernate:3.5.6-Final

在 Java 方面,我使用 Hibernate Criteria 从数据库中检索数据。没有该right功能,它可以正常工作。该语句运行也没有错误,直接在数据库上使用 sql 客户端执行。

Criteria API 会导致问题吗?

java sql database oracle hibernate-mapping

3
推荐指数
1
解决办法
6418
查看次数

将CURDATE()的日期值与完整时间戳字段进行比较

我有一个函数将时间戳值(YYYY-MM-DD HH:MM:SS)放入META_VALUE表的列中META.

我想要做的是比较日期部分(YYYY-MM-DD)META_VALUE是否等于今天(CURDATE()),忽略小时,分钟和秒(HH:MM:SS).

我怎么能做到这一点?

mysql sql timestamp date

3
推荐指数
1
解决办法
9709
查看次数

注销时如何使用户会话无效?

我花了很多时间来解决这个问题,但仍然无法让它发挥作用.

我正在使用Spring Security.该应用程序将在多个服务器上运行.我在登录时使用"记住我"选项来保存我的数据库中的持久登录.

如果用户连接到服务器1,则他在cookie浏览器中具有会话ID.我打开另一台服务器,此用户进行身份验证,cookie浏览器具有此会话ID和服务器1连接的会话ID.

当此用户在一台服务器或另一台服务器中注销时,应将其重定向到所有服务器中的登录页面.

我试图从浏览器中删除cookie但没有成功.我怎样才能做到这一点?有帮助吗?

示例场景:在gmail中,如果您的帐户中有2个选项卡已打开,并且您从其中一个选项卡中注销,则其他选项卡也会自动注销.服务器1不知道服务器2的信息.我认为我的问题在这里,但我不知道如何解决这个问题.

这是我的安全配置:

<http auto-config="false" use-expressions="true" disable-url-rewriting="true">
   <intercept-url pattern="/login.do" access="permitAll" />
   <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
   <remember-me data-source-ref="dataSource" />
   <form-login login-page="/login.do" />
   <custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
   <custom-filter position="LOGOUT_FILTER" ref="logoutFilter" />
   <session-management session-authentication-strategy-ref="sas" />
</http>

<!-- <logout logout-url="/j_spring_security_logout" logout-success-url="/" invalidate-session="true" /> -->

<beans:bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
   <beans:constructor-arg value="/login.do" />
   <beans:constructor-arg>
      <beans:list>
         <beans:ref bean="rememberMeServices"/>
         <beans:ref bean="logoutHandler"/>
      </beans:list>
   </beans:constructor-arg>
   <!-- <beans:property name="filterProcessesUrl" value="/login.do" /> -->
</beans:bean>

<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />

<beans:bean id="concurrencyFilter" class="org.springframework.security.web.session.ConcurrentSessionFilter">
   <beans:property name="sessionRegistry" ref="sessionRegistry" />
   <beans:property name="expiredUrl" value="/login.do" …
Run Code Online (Sandbox Code Playgroud)

authentication cookies spring spring-security sessionid

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

Java查看arraylist是否包含字符串

我有一个叫做Paragens这样的课:

public class Paragens {
    static int contadorParagens = 1;

    String nomeParagem;
    int id;

    public Paragens(String nomeParagem) {
        this.nomeParagem = nomeParagem;
        this.id = contadorParagens++;
    }

    // getters and setters for nomeParagem
}
Run Code Online (Sandbox Code Playgroud)

每个Paragens对象都有一个名称和一个Id.

这个类有一个main方法,我创建几个Paragens对象并将它们存储在ArrayList中,如下所示:

public static void main(String[] args) {
    ArrayList<Paragens> paragens = new ArrayList<Paragens>();
    paragens.add(new Paragens("name1");
    // ... add more paragens
}
Run Code Online (Sandbox Code Playgroud)

这工作正常.如果我插入一堆paragens并打印它们,我可以看到tat一切都好.

我想要做的是要求用户输入一个paragem名称然后我想看看该paragem是否已经在ArrayList中.

String name;
System.out.println("Insert paragem name: ");
pickName = sc.nextLine();
System.out.println(paragens.contains(pickName));
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java arraylist

0
推荐指数
1
解决办法
3万
查看次数