小编Ins*_*sFi的帖子

Hibernate持久化实体而不提取关联对象.只是通过id

我有两个实体之间的简单关联:

public class Car {

    ...

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;

    ...

}
Run Code Online (Sandbox Code Playgroud)

public class User {

    @Id
    @GeneratedValue
    @Column(name = "user_id")
    private long userId;

    ...

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    private Set<Car> cars;

    ...

}
Run Code Online (Sandbox Code Playgroud)

然后我从客户端获得一些用户ID.例如,userId == 5;
为了节省汽车用户,我需要做下一步:

User user = ... .findOne(userId);  
Car car = new Car();
car.setUser(user);
... .save(car);
Run Code Online (Sandbox Code Playgroud)

我的问题是:
我可以在没有取用用户的情况下坚持记录汽车记录吗?

与我使用本机SQL查询一样:只需在Car表中插入userId,如string(long).

使用第二个lvl缓存会更快,但在我看来,我不需要做额外的动作.

我不想使用本机查询的主要原因是因为我的项目中有更多难关联,我需要多次.save(car).此外,我不想手动控制查询执行的顺序.

如果我使用session.createSQLQuery("insert into ..... values()"),Hibernate的批量插入工作会正常吗?



如我错了请纠正我.

提前致谢!

更新:

实际上映射类似于:

用户和汽车之间有@ManyToMany关联.但是交叉表也是一个名为Passanger的实体.所以映射是下一个:

public class User{
    @OneToMany(fetch = FetchType.LAZY, mappedBy …
Run Code Online (Sandbox Code Playgroud)

java hibernate

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

Spring Boot 1.2.5.RELEASE - 通过Gmail SMTP发送电子邮件

首先,我需要说发送1.2.0.RELEASE的电子邮件工作正常

application.properties:

spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.socketFactory.port = 465
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
Run Code Online (Sandbox Code Playgroud)

pox.xml

<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.2.0.RELEASE</version>
     <relativePath/>
</parent>
Run Code Online (Sandbox Code Playgroud)

.......

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)


将父版本更改为1.2.5.RELEASE电子邮件发送无效

文档说: 如果spring.mail.host和相关库(由spring-boot-starter-mail定义)可用,则创建默认JavaMailSender(如果不存在).


所以我补充说

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

它没有帮助,然后我已经取而代之

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.5.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我也试过了

spring.mail.host = smtp.gmail.com
spring.mail.username = *****@gmail.com
spring.mail.password = ****
spring.mail.port = 465
Run Code Online (Sandbox Code Playgroud)

结果一样.

手动创建和配置@Bean不是问题.但是我想要使用Spring Boot的所有美感.
请指出我的错误.

提前致谢

java email spring jakarta-mail spring-boot

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

Android O API 26.新添加的Location方法无法正常工作

我正在使用Android O Developer预览版4 - API 26

设备 - Google Pixel XL

在此输入图像描述

并且似乎是新功能,例如:

  • hasSpeedAccuracy() 总是回来 false
  • getSpeedAccuracyMetersPerSecond() 总是回来 0.0
  • getBearingAccuracyDegrees() 总是回来 0.0

适用于两者fusedgps位置提供商.我在开车时试过了.所以我speedbearing他们自己但不准确.

我错过了什么吗?

请参阅此处的文档

谢谢!

android android-developer-api android-gps

21
推荐指数
1
解决办法
954
查看次数

Hibernate - 在OneToMany上使用JOIN时,sqlQuery映射冗余记录

我在2个实体(Entity1 To Entity2)之间有@OneToMany关联.

我的sqlQueryString包含以下步骤:

  • select ent1.*, ent2.differ_field from Entity1 as ent1 left outer join Entity2 as ent2 on ent1.item_id = ent2.item_id
  • 添加一些子查询并将结果写入some_field2,some_field3等.


执行:

Query sqlQuery = getCurrentSession().createSQLQuery(sqlQueryString)
                 .setResultTransformer(Transformers.aliasToBean(SomeDto.class));

List list = sqlQuery.list();
Run Code Online (Sandbox Code Playgroud)

class SomeDto {
    item_id;
    some_filed1;
    ...
    differ_field;
    ...

}
Run Code Online (Sandbox Code Playgroud)

结果是 List<SomeDto>

在此输入图像描述

用灰色突出显示的字段是相同的.

所以,我想要的是group by,例如,item_idList<Object> differFieldList将作为聚合的结果.

class SomeDto {

 ...fields...

 List<Object> differFieldList;

}
Run Code Online (Sandbox Code Playgroud)

或类似的东西 Map<SomeDto, List<Object>>

我可以手动映射,但有一个麻烦:当我使用时,sqlQuery.setFirstResult(offset).setMaxResults(limit) 我检索limit记录的数量.但是有多余的行.合并后我实际上没有多少计数.

提前致谢!

java sql database orm hibernate

8
推荐指数
1
解决办法
559
查看次数

Spring Data,JPA @ManyToOne懒惰初始化无法正常工作

我知道有很多关于这个问题的类似问题但对我没什么用.

我在Aim和User之间有@ManyToOne关系.

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false, updatable = false)
private User user;
Run Code Online (Sandbox Code Playgroud)

@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private Collection<Aim> userAims;
Run Code Online (Sandbox Code Playgroud)

分别.

@Override
@Transactional(propagation = Propagation.REQUIRED)
@PreAuthorize("isAuthenticated() and principal.user.isEnabled() == true")
public Aim findById(String aimId) throws NumberFormatException, EntityNotFoundException {
    Aim aim = null;
    try {
        aim = aimRepository.findOne(Long.parseLong(aimId));
    } catch (NumberFormatException e) {
        throw new InvalidDataAccessApiUsageException(e.getMessage(), e);
    }
    if (aim == null) throw new EntityNotFoundException("Aim with id: " + …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa spring-data-jpa

7
推荐指数
1
解决办法
4875
查看次数

`nx Impact:lint --fix` 和 `nx format:write` 之间的区别

nx affected:lint --fix和 和有nx format:write什么区别?

不同的文章似乎确实提到代码应该使用nx format:write命令进行格式化,但似乎并没有完全依赖于 ESLint 规则。

格式化后,我一直有 ESLint 错误。

我错过了什么吗?

谢谢

nrwl nrwl-nx

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

必需的字符串参数'userName'不存在

我试图从java脚本控制台进行AJAX调用,如下所示

jQuery.ajax({
  contentType: "application/json",
  url: "/accountServices/resetPassword",
  type: "POST",
  data: '{
        "userName":"local_student",
        "newPassword":"test1231",
        "guid":"376ed5f7-a780-455e-8682-6b5cf45cff80"
         }'
}); 
Run Code Online (Sandbox Code Playgroud)

我的控制器方法是这样的.

@RequestMapping(value = "/resetPassword", method = RequestMethod.POST)
public String resetPassword(@RequestParam("userName") String userName,
                            @RequestParam("newPassword") String newPassword,
                            @RequestParam("guid") String guid, Model uiModel, 
                            HttpServletRequest request, final Locale locale) 
                            throws MessagingException {
        try {}
}
Run Code Online (Sandbox Code Playgroud)

我收到了错误

必需的字符串参数'userName'不存在.

有人可以帮帮我吗!

jquery spring spring-mvc

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

Google Drive API.获取共享链接(sharedUrl)

我可以以某种方式获得sharedLink而不显示gapi.drive.share.ShareClient()对话框吗?我只想创建自己的Picker对话框来共享文件.

我已经调查过这个对话框连接到外部URL /sharing/commonshare/ 以设置共享状态并获取sharedLinks.

在此输入图像描述 在此输入图像描述

如你所见,POST请求中有"token"prop.(第一张图片)要获得它,API会做另一个请求

在此输入图像描述 我有所有数据来获取它.但我得到405错误.

其实我不想那么努力.有关于它的文档是否存在?因为我没有找到类似的东西.

我只是想分享选定的文件.

谢谢!

javascript google-drive-api

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