小编Sea*_*oyd的帖子

如何在休眠时指定Double的精度?

我尝试从hibernate注释创建一个表.我需要一个Double类型的列,其长度指定为:(10,2).所以SQL语法显示如下:

... DOUBLE(10,2) ....
Run Code Online (Sandbox Code Playgroud)

我试过这样做:

@Column(length = 10, precision = 2) ...
Run Code Online (Sandbox Code Playgroud)

但是当我查看我创建的表时,没有指定Double列的长度.Hibernate是否有解决方案或是否需要手动更改表配置?

谢谢!

java hibernate jpa

31
推荐指数
4
解决办法
8万
查看次数

Groovy语法是Java语法的精确超集吗?

作为一名Java程序员,我并没有真正的Groovy背景,但我最近使用Groovy来扩展Maven(使用GMaven).到目前为止,我可以在Groovy中使用我需要的所有Java代码,添加了Groovy糖(元类方法,更多运算符,闭包).我对Groovy的了解远非完整,但我喜欢它,特别是对于脚本编写目的(我在企业场景中使用非静态类型语言时要小心,但这不是主题).

无论如何,问题是:

是否每一位有效的Java代码都自动有效的Groovy代码?(我说的是源代码,而不是编译的类,我知道Groovy可以与Java类交互.)或者是否有在Groovy中非法的Java构造?也许是一个保留的Groovy关键字,可以用作Java中的标识符,还是其他什么?或者Groovy故意被设计为与Java 100%兼容?

java syntax groovy

31
推荐指数
4
解决办法
2353
查看次数

Spring 3.1 JSON日期格式

我正在使用带注释的Spring 3.1 MVC代码(spring-mvc),当我通过@RequestBody发送日期对象时,日期显示为数字.这是我的控制器

@Controller
@RequestMapping("/test")
public class MyController {

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Date.class,
                  new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
    }


    @RequestMapping(value = "/getdate", method = RequestMethod.GET)
    public @ResponseBody Date getDate(@RequestParam("dt") Date dt, Model model) {
        // dt is properly constructed here..
        return new Date();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我通过日期时,我能够以格式收到日期.但我的浏览器将日期显示为数字

1327682374011
Run Code Online (Sandbox Code Playgroud)

如何以我为webbinder注册的格式显示日期?我在一些论坛上看到我应该使用杰克逊映射器,但我不能改变现有的映射器?

java spring spring-mvc

31
推荐指数
3
解决办法
4万
查看次数

如何使用RestTemplate脱机进行单元测试?

我有一个直接依赖于RestTemplate的类.我希望我有离线的JUnit测试.

我怎么能在我的单元测试中模拟RestTemplate?

java junit spring unit-testing resttemplate

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

如何使用Google Guava自动刷新缓存?

我正在使用Google Guava库进行缓存.对于自动缓存刷新,我们可以执行以下操作:

cache = CacheBuilder.newBuilder()               
                    .refreshAfterWrite(15, TimeUnit.MINUTES)
                    .maximumSize(100)
                    .build(....);
Run Code Online (Sandbox Code Playgroud)

但是,当第一个条目的陈旧请求发生时,将执行自动刷新.

有没有办法自动刷新它,即使没有缓存数据的请求?就像每15分钟一样,缓存数据应该从Db中提取并加载它,无论是否有人调用缓存数据.

此外,Guava的缓存到期时间适用于整个缓存.是否可以基于密钥使缓存值失效?像密钥"NOT_SO_FREQ_CHANGE_DATA"的缓存数据每1小时到期一次,密钥"FREQ_CHANGING_DATA"的数据应该每15分钟到期一次?

java caching guava

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

Java:方法中的枚举参数

我有一个方法可以说:

private static String drawCellValue(
    int maxCellLength, String cellValue, String align) { }
Run Code Online (Sandbox Code Playgroud)

你可以注意到,我有一个名为align的参数.在这个方法里面,我将对if值是'left'还是'right'有一些if条件.将参数设置为String,显然我可以传递任何字符串值..我想知道它是否可能将Enum值作为方法参数,如果是,如何?

以防有人想到这个; 我想过使用布尔值,但我真的不喜欢它.首先,如何将真/假与左/右相关联?(好吧,我可以使用注释但我仍然觉得它很脏)其次,我可能会决定添加一个新值,比如'justify',所以如果我有两个以上的可能值,那么绝对不能使用布尔类型.

有任何想法吗?

java parameters methods enums

29
推荐指数
3
解决办法
10万
查看次数

Hibernate(JPA)继承抽象超类的映射

我的数据模型代表法律实体,例如商业或个人.两者都是纳税实体,并且都有一个TaxID,电话号码的集合,和邮寄地址的集合.

我有一个Java模型,有两个扩展抽象类的具体类.抽象类具有两个具体类共有的属性和集合.

AbstractLegalEntity        ConcreteBusinessEntity    ConcretePersonEntity
-------------------        ----------------------    --------------------
Set<Phone> phones          String name               String first
Set<Address> addresses     BusinessType type         String last
String taxId                                         String middle

Address                    Phone
-------                    -----
AbsractLegalEntity owner   AbstractLegalEntity owner
String street1             String number
String street2           
String city
String state
String zip
Run Code Online (Sandbox Code Playgroud)

我在MySQL数据库上使用Hibernate JPA Annotations,其类如下所示:

@MappedSuperclass
public abstract class AbstractLegalEntity {
    private Long id;  // Getter annotated with @Id @Generated
    private Set<Phone> phones = new HashSet<Phone>();  // @OneToMany
    private Set<Address> address = new HashSet<Address>(); …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

过度使用OOP的症状和替代方案

最近我失去了对OOP的信任.我已经看到很多关于普通OOP滥用或仅仅过度使用的抱怨.我并不是指a-a和has-a relationship之间的常见混淆.我的意思是处理关系数据库时ORM的问题,C#继承的过度使用,以及几年来看看具有相同错误封装信念的代码,Scott Meyers在Effective C++的第23项中提到了这一点.

我有兴趣了解更多关于这个和非OOP软件模式,可以比他们的OOP对应物更好地解决某些问题.我确信在那里有很多人就如何使用它作为非纯OOP语言(如C++)的优势提供了很好的建议.

有谁知道任何好的参考(作者,书籍,文章)开始?

请注意,我正在寻找两个相关但不同的东西:

  • 常见的OOP概念滥用(如第23项)
  • OOP不是最佳解决方案的模式(有替代方案)

c++ oop reference

29
推荐指数
1
解决办法
2222
查看次数

Spring AOP切入点与接口上的注释匹配

我有一个在Java 6/Spring 3中实现的服务类,它需要一个注释来限制角色访问.

我已经定义了一个名为RequiredPermission的注释,它具有一个名为OperationType的枚举中的一个或多个值作为其value属性:

public @interface RequiredPermission {

/**
 * One or more {@link OperationType}s that map to the permissions required
 * to execute this method.
 * 
 * @return
 */
OperationType[] value();}

public enum OperationType {
      TYPE1,
      TYPE2;
}

package com.mycompany.myservice;
public interface MyService{
   @RequiredPermission(OperationType.TYPE1)
   void myMethod( MyParameterObject obj );
}

package com.mycompany.myserviceimpl;
public class MyServiceImpl implements MyService{
   public myMethod( MyParameterObject obj ){
       // do stuff here
   }
}
Run Code Online (Sandbox Code Playgroud)

我还有以下方面定义:

/**
 * Security advice around methods that are annotated with …
Run Code Online (Sandbox Code Playgroud)

java aop spring aspectj pointcut

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

了解Spring事务 - 当事务方法调用另一个事务方法时会发生什么?

只是为了理解Spring事务的工作原理,我想知道在下面的情况下会发生什么,其中一个方法被标记为@Transactional调用另一个标记为的方法@Transactional.

假设配置使用所有默认设置.

@Service("myService")
@Transactional
public MyService{
   public void myServiceMethod(){
      myDAO.getSomeDBObjects();
   }
}

@Repository("myDAO")
@Transactional
public MyDAOWithUsesBeyondMyService{
   public void getSomeDBObjects(){...}
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我要输入MyService.myServiceMethod()它,显然会启动一个交易.然后,钻进myDAO.getSomeDBObjects()会发生什么?交易已经存在的事实会导致没有新的交易产生,或者我在这里创建两个交易?

关于传播的文档(引用如下)似乎涵盖了这一点,但我想验证我的理解,这对于我的处女大脑来说有点多了解一下.

传播:通常,在事务范围内执行的所有代码都将在该事务中运行.但是,您可以选择在事务上下文已存在时执行事务方法时指定行为.例如,代码可以继续在现有事务中运行(常见情况); 或者可以暂停现有交易并创建新交易.Spring提供了EJB CMT中熟悉的所有事务传播选项.要了解Spring中事务传播的语义,请参见第10.5.7节"事务传播".

java spring transactions

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