小编Chr*_*Geo的帖子

Java SE + Spring Data + Hibernate

我正在尝试使用Spring Data + Hibernate启动Java SE应用程序,并且到目前为止完成了以下操作:

配置文件

@Configuration
@PropertySource("classpath:hibernate.properties")
@EnableJpaRepositories
@EnableTransactionManagement
public class JpaConfiguration {

    private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
    private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
    private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
    private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";

    private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
    private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
    private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN =
            "entitymanager.packages.to.scan";

    @Resource
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();

        dataSource.setDriverClassName(
                env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
        dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL)); …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-data

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

MongoDB mongoexport查询

我在MongoDB中有以下表单的集合.正如您所看到的,有些文档有两个成员"id"和"xid",有些只有1个"id"(除了Object _id)

[
    {
        "id" : 1,
    },

    {
        "id" : 2,
    },

    {
       "id" : 3
       "xid": 300
    }
]
Run Code Online (Sandbox Code Playgroud)

我想创建一个mongoexport语句,只输出id为AND xid的文档,其值为xid> 0

我目前有以下命令:

mongoexport -h host -u user -p pass --db database --collection collections --csv --fields id,xid --query '{"xid":{"$ne":0}}' --out rec.csv
Run Code Online (Sandbox Code Playgroud)

但是,这也会导出具有不带xid的id的文档.所以我得到了类似的东西

xid, id
12, 3
,4
14, 5
,3
,2
12, 5
Run Code Online (Sandbox Code Playgroud)

等等

有没有办法导出只有id和xid的文件?

mongodb mongodb-query

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

Java Json pretty print javax.json

我正在尝试使用javax.json API打印json

我目前使用的代码如下:

private String prettyPrint(String json) {
        StringWriter sw = new StringWriter();

        try {
            JsonReader jr = Json.createReader(new StringReader(json));

            JsonObject jobj = jr.readObject();



            Map<String, Object> properties = new HashMap<>(1);
            properties.put(JsonGenerator.PRETTY_PRINTING, true);


            JsonGeneratorFactory jf = Json.createGeneratorFactory(properties);
            JsonGenerator jg = jf.createGenerator(sw);

            jg.write(jobj).close();


        } catch (Exception e) {
        }

        String prettyPrinted = sw.toString();

        return prettyPrinted;
    }
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

11:47:08,830 ERROR [stderr] (EJB default - 1) javax.json.stream.JsonGenerationException: write(JsonValue) can only be called in array context
11:47:08,835 ERROR [stderr] (EJB default - 1)   at org.glassfish.json.JsonGeneratorImpl.write(JsonGeneratorImpl.java:301) …
Run Code Online (Sandbox Code Playgroud)

java json

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

Android:AutoCompleteTextView隐藏软键盘

我有一个AutoCompleteTextView,它通常在用户输入3个字母后提供建议.一旦我触摸建议列表隐藏软键盘,我想要一次.我在下面使用表格布局所做的只有在点击建议列表时才会隐藏键盘.

XML

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center" >

    <AutoCompleteTextView
        android:id="@+id/auto_insert_meds"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="15"
        android:inputType="textVisiblePassword|textMultiLine"
        android:scrollHorizontally="false"
        android:text=""
        android:textSize="16sp" />
</TableRow>
Run Code Online (Sandbox Code Playgroud)

Java的

TableLayout tbl = (TableLayout) findViewById(R.id.main_table);
tbl.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        in.hideSoftInputFromWindow(v.getWindowToken(), 0);
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

用于自定义列表的XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/medlist_linear_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

        <TextView
        android:id="@+id/med_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollHorizontally="false"
        android:padding="3dp"
        android:textColor="@android:color/white" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android autocompletetextview android-softkeyboard

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

日期范围验证

我想比较两个日期(StartDate和EndDate)并检查一个日期是否在另一个日期之前.最简单的解决方案是在支持bean上执行此操作并将方法"短路".

但是,此验证不会与其他表单验证同时发生.例如,如果我有另一个需要验证的字段(除了日期)并且输入无效,我将只收到该特定字段的消息.只有当其他字段有效时,才会根据辅助bean获取日期验证.

有人有解决方案吗?

validation jsf date-range

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

如何强制Spring HATEOAS资源呈现一个空的嵌入式数组?

我有以下控制器方法:

@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "session/{id}/exercises")
public ResponseEntity<Resources<Exercise>> exercises(@PathVariable("id") Long id) {

  Optional<Session> opt = sessionRepository.findWithExercises(id);
  Set<Exercise> exercises = Sets.newLinkedHashSet();

  if (opt.isPresent()) {
    exercises.addAll(opt.get().getExercises());
  }

  Link link = entityLinks.linkFor(Session.class)
                         .slash(id)
                         .slash(Constants.Rels.EXERCISES)
                         .withSelfRel();

  return ResponseEntity.ok(new Resources<>(exercises, link));
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我试图揭露一个特定Set<>Exercise实体Session.当exercise实体为空时,我得到一个像这样的JSON表示:

{
    "_links": {
        "self": {
            "href": "http://localhost:8080/api/sessions/2/exercises"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以基本上没有嵌入式实体,而以下类似的东西是可取的:

{
    "_links": {
        "self": {
            "href": "http://localhost:8080/api/sessions/2/exercises"
        }
    }, 
    "_embedded": {
        "exercises": [] 
    }    
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何执行这个?

spring spring-hateoas

14
推荐指数
1
解决办法
4898
查看次数

Spring Data REST自定义查询集成

我想为一个Employee基本上是findByAllFields查询的实体创建一个REST链接.当然这应该与Page和结合使用Sort.为此,我实现了以下代码:

@Entity
public class Employee extends Persistable<Long> {

    @Column
    private String firstName;

    @Column
    private String lastName;

    @Column
    private String age;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date hiringDate;
}
Run Code Online (Sandbox Code Playgroud)

所以我想让我们说一下我可以做的查询:

http://localhost:8080/myApp/employees/search/all?firstName=me&lastName=self&ageFrom=20&ageTo=30&hiringDateFrom=12234433235
Run Code Online (Sandbox Code Playgroud)

所以我有以下内容 Repository

 @RepositoryRestResource(collectionResourceRel="employees", path="employees")
 public interface EmployeeRepository extends PagingAndSortingRepository<Employee, Long>, 
                                                         JpaSpecificationExecutor<Employee> {

 }
Run Code Online (Sandbox Code Playgroud)

好的,现在我需要一个RestController

@RepositoryRestController
public class EmployeeSearchController {

    @Autowired
    private EmployeeRepository employeRepository;

    @RequestMapping(value = "/employees/search/all/search/all", method = RequestMethod.GET)
    public Page<Employee> getEmployees(EmployeeCriteria filterCriteria, Pageable pageable) {

        //EmployeeSpecification uses CriteriaAPI to form dynamic query with …
Run Code Online (Sandbox Code Playgroud)

rest spring spring-data-rest spring-hateoas

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

JPA更新双向关联

让我们假设我们有以下实体:

    @Entity
    public class Department {

        @OneToMany(mappedBy="department")
        private List<Employee> employees;
    }

    @Entity
    public class Employee {

        @ManyToOne
        private Department department
    }
Run Code Online (Sandbox Code Playgroud)

在更新中我们需要维护关系的两个方面,这是可以理解的,如下所示:

Employee emp = new Employee();
Department dep = new Department();
emp.setDepartment(dep);
dep.getEmployees().add(emp);
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到现在.问题是我应该如下所示在双方应用合并,并且我避免第二次合并级联?

entityManager.merge(emp);
entityManager.merge(dep);
Run Code Online (Sandbox Code Playgroud)

或者正在合并拥有方?这些合并也应该发生在Transaction或EJB中吗?或者在具有分离实体的简单控制器方法上执行它就足够了?

java hibernate jpa bidirectional-relation

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

PrimeFaces DataTable CellEdit获取实体/对象

我有一个数据表,它显示基于List <>的各种实体.当我选择一个单元格进行编辑时,我希望能够以某种方式获取实体以便更新它.当然有event.getRowIndex,然后我可以使用List <>,但这并不总是方便的.是否有另一种方法可以从CellEditEvent获取实体?

jsf facelets primefaces

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

使用Java 8 Streams的Spring Data JPA存储库

假设我有以下存储库:

public interface UserRepository extends JpaRepository<User, Long> {

    @Query("select u from User u")
    Stream<User> streamAllPaged(Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)

我想进行搜索:

public Page<User> findAllUsers(Pageable page) {

    Page<User> page = null;
    try (Stream<User> users = userRepository.streamAllPaged(page)) {
            Set<User> users = users.filter(u -> user.getName().equals("foo"))
                    .collect(Collectors.toSet());
            //create page from set?
    }

}
Run Code Online (Sandbox Code Playgroud)

显然我可以使用子列表并手动插入页面大小等但我想应该有更"标准"的方法来做到这一点?

java spring java-8 spring-data spring-data-jpa

9
推荐指数
1
解决办法
3940
查看次数