我有简单的Entitly类@EmbeddedId
(Integer
和String
单独的类中的字段).我使用Spring Data(org.springframework.data.jpa.repository.JpaRepository
)访问数据库(MySql),正常的Id查询工作正常,由Spring生成和我自己编写的.随着EmbeddedId
我没有管理,以创建正确的查询.我想要做的是选择所有的id(其中某个条件发生的embeddedId的一个字段)在这里你有一些代码示例,也许有人会知道如何解决它.
实体类:
@Entity
@Table(name="table_name")
public class EntityClass {
@EmbeddedId
private EmbeddedIdClass id;
private String someField;
//rest of implemetation
}
Run Code Online (Sandbox Code Playgroud)
EmbeddedId类:
@Embeddable
public class EmbeddedIdClass implements Serializable {
public EmbeddedIdClass(Long id, String language) {
super();
this.id = id;
this.language = language;
}
public UserAdTextId() {}
@Column(name="ad_id", nullable=false)
private Integer id;
@Column(name="language_code", nullable=false)
private String language;
//rest of implemetation
}
Run Code Online (Sandbox Code Playgroud)
和存储库:
@Transactional(readOnly=true)
public interface MyRepository extends JpaRepository<EntityClass, EmbeddedIdClass> {
@Query("select distinct …
Run Code Online (Sandbox Code Playgroud) 我使用Spring 3.0与Hibernate和PostgreSQL,我有以下问题:
我将文件上传到数据库,保存其内容类型,一切正常,数据库中字段的大小是正常的.但是当我尝试下载它时,Hibernate会返回两倍大小的字节数组.下载的文件当然已损坏.大小比数据库中的大小大两倍......我的代码如下所示:
字段域类(带映射):
private byte[] cv;
@Column(name="cv")
public byte[] getCv() {
return this.cv;
}
Run Code Online (Sandbox Code Playgroud)
加载对象的DAO函数:
public Candidate load(Integer id) {
return (Candidate) getHibernateTemplate().get(Candidate.class, id);
}
Run Code Online (Sandbox Code Playgroud)
会话工厂配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.jdbc.batch_size">30</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="packagesToScan" value="foo.foo.core.domain"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
SQL创建:
CREATE TABLE candidate
(
id serial NOT NULL,
cv bytea,
...
)
Run Code Online (Sandbox Code Playgroud)
如果它有任何不同,数据库将被编码为UTF-8.
我正在尝试使用org.springframework.jdbc.support.lob.DefaultLobHandler,但它没有做到这一点..任何想法?这让我疯狂..
我对 Terraform 配置有疑问。当我第一次运行 terraform 时,我使用在 AWS 控制台中生成的 SSH 密钥。该密钥已添加到ubuntu
用户(Ubuntu 16.04 AMI)。然后我运行remote-exec
配置:
provisioner "remote-exec" {
inline = [
"sudo apt -y update && sudo apt install -y python"
]
connection {
user = "ubuntu"
private_key = "${file("${var.aws_default_key_name}.pem")}"
}
}
Run Code Online (Sandbox Code Playgroud)
我需要安装 python,以便稍后可以使用 Ansible。这是我唯一需要此密钥的地方,再也不会了,因为我用我的私钥创建了自己的用户。但是,当我稍后尝试运行 terraform 时,它会搜索文件file("${var.aws_default_key_name}.pem"
. 现在我有一个问题如何在后续运行中跳过此配置?
我不想将 SSH 密钥存储在存储库中。
我可以创建一个空文件来“欺骗”terraform,但我不喜欢这个解决方案。
还有更好的想法吗?
我正在阅读很多教程,但没有一个能为我工作......我使用Spring 3.1.x和Spring Security.我有一堆安全网址,许多没有安全保护.现在,当用户登录并尝试注销时,我希望他保持与以前相同的页面,所以我使用它:
<beans:bean id="logoutSuccessHandler" class="org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler">
<beans:property name="useReferer" value="true"/>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
这很好,但是当用户从安全页面注销时,它会将其重定向到登录页面,我想重定向到主页..我怎样才能实现这一点?提前致谢!
我有以下JPQL问题:One Class有三个字段:
public class Message{
Integer ownerId;
Integer fromUserId;
Integer toUserId;
//rest of implementation
}
Run Code Online (Sandbox Code Playgroud)
然后我想通过用户名在数据库中搜索,但我们有3个用户附加到此消息:所有者,收件人和发件人,所以我在SQL中做的是:
SELECT * FROM message m
LEFT JOIN user o ON m.owner_id=o.id
LEFT JOIN user fu ON m.from_user_id = fu.id
LEFT JOIN user tu ON m.to_user_id = tu.id
WHERE o.name like '%foo%' OR fu.name like '%foo%' OR tu.name like '%foo%';
Run Code Online (Sandbox Code Playgroud)
哪个可能不是最快的查询,但工作正常.然后我想把它翻译成JPQL,但这并不容易.我在'on'令牌上得到了异常,我知道如果类有关系定义到另一个类,JOIN是可能的,但是这里的关系有点复杂,因为我们有3个用户与一个Message相关.任何想法如何解决这个问题?